正規表示式測試器 (即時匹配、分組、替換)
輸入正則與測試文本 — 輸入時匹配即時高亮。切換 flag (g/i/m/s/u)、檢視捕獲組、預覽替換。
運作原理
Flag 的作用
g (global): 找所有匹配, 不只第一個。replace-all 必需。i (case-insensitive): /[a-z]/i 匹配大小寫。m (multiline): ^ 與 $ 在換行處匹配, 不僅串首尾。s (dotall): . 也匹配換行。u (unicode): 正確處理 0xFFFF 以上碼點 (表情、代理對中的 CJK)。
多數人從 /g/i/m 開始。/s/ 在多行文本匹配時有用。可能遇到表情或非 BMP 字元時建議 /u/ — 否則 /./ 不會把 4 位元組表情當成單字元。
捕獲組與替換
圓括號建捕獲組: /(\d{4})-(\d{2})/ 在 '2026-05' 上分別捕獲 '2026' 與 '05'。在替換中用 $1、$2 引用。命名組用 (?<name>...), 替換中用 $<name>。
常見替換技巧: $& 插入整體匹配。$1、$2 等插入捕獲組。$$ 插入字面 $。這裡的替換預覽讓你在真實文本上跑同模式前先檢查 — 比直接在生產資料上跑安全得多。
要注意的陷阱
反斜槓轉義。要匹配字面 '.', 用 '\.'。在 JavaScript 源串中是 '\\.', 但本工具中你只輸入 '\.', 因為是正則源。
災難性回溯。/(a+)+/ 這樣的模式在 'aaaa…!' 上可能永遠跑不完。如果測試似乎卡住, 你的正則可能有巢狀量詞。簡化或用佔有性/原子組 (JS 正則沒有; 用細緻設計代替)。
貪婪 vs 懶惰。/<.+>/ 在 '<a><b>' 上匹配 '<a><b>' (貪婪)。/<.+?>/ 匹配 '<a>' (懶惰)。按用例選對的。
常見問題
›用哪種正則風格?
JavaScript ECMAScript 正則 (你瀏覽器實現的)。與 PHP、.NET、Python 用的 PCRE 略有不同。
›為什麼 lookbehind 不工作?
在現代瀏覽器中工作 — Chrome、Firefox、Safari、Edge 自 2021 年起都支援 (?<=...) 與 (?<!...)。如果你的不行, 瀏覽器可能過舊。
›'u' flag 做什麼?
啟用正確 Unicode 處理。表情如 🎉 (UTF-16 代理對) 在 /u/ 下被當成一個字元, 預設模式下被當兩個。
›如何匹配製表符或換行?
\t 製表符, \n 換行, \r 回車, \s 含所有這些的任意空白。
›為什麼我的替換不工作?
最常見, 你忘了 'g' flag — 沒 'g' 的替換隻換第一個匹配。切換 'g' 替換全部。
›可處理超長文本?
可以, 幾 MB 內。再大瀏覽器可能變慢。避免在長輸入上跑災難模式 (巢狀量詞)。
›資料會上傳嗎?
不會。模式與文本僅本地處理。
›有正則速查表嗎?
搜「JavaScript regex cheat sheet」。MDN 的 RegExp 頁是權威參考。
相關工具
最後更新: