Regex 測試工具 線上
貼上 pattern,用真實文字測試,在它進入正式驗證前看清楚到底匹配了什麼。
//
匹配資訊0 matches
測試字串
字元數: 82
匹配標示
.任意字元
\d數字
\w單字字元
^/$開頭 / 結尾
為什麼使用線上 regex 測試工具?
Regex bug 藏在很小的細節裡:少一個 anchor、太貪婪的 quantifier、忘記的 flag,或樣本資料和正式環境輸入完全不同。即時測試器把 pattern、flags、matches 和 test string 放在一起,讓你修真正的 expression,而不是猜。
Regex 速查表
字元類別
| . | 匹配換行以外的任意字元 |
| \w | 匹配字母、數字或底線 |
| \d | 匹配數字 |
| \s | 匹配空白字元 |
| [abc] | 匹配列出的任一字元 |
| [^abc] | 匹配未列出的任一字元 |
量詞
| * | 匹配零次或多次 |
| + | 匹配一次或多次 |
| ? | 匹配零次或一次 |
| {n} | 精確匹配 n 次 |
| {n,} | 至少匹配 n 次 |
| {n,m} | 匹配 n 到 m 次 |
錨點
| ^ | 匹配字串開頭 |
| $ | 匹配字串結尾 |
| \b | 匹配單字邊界 |
| \B | 匹配非單字邊界 |
| (?=p) | 正向先行斷言 |
| (?!p) | 負向先行斷言 |
旗標
| g | 全域搜尋 |
| i | 不分大小寫模式 |
| m | 多行模式 |
| s | 點號可匹配換行 |
| u | Unicode 模式 |
進階 FAQ
貪婪和惰性匹配有什麼不同?
貪婪匹配會盡量吃下更多文字。惰性匹配會在 quantifier 後加 ?,讓引擎在最早有效匹配處停止。
電子郵件地址應該怎麼用 regex 驗證?
Regex 可作為實用的第一層檢查,但不要把它當成所有權最終證明。驗證流程仍然重要。
為什麼 regex 在某語言可用,換語言就失敗?
Regex 引擎支援的功能不完全相同。JavaScript、PCRE、Python、Java 和資料庫 regex 方言在 lookbehind、named groups、Unicode 處理和 escaping rules 上都可能不同。
Regex 會造成效能問題嗎?
會。巢狀 quantifier 和模糊 alternative 可能在特定輸入上造成大量 backtracking。把 pattern 用在請求驗證前,請測試真實 worst-case 字串。