測試與偵錯正規表達式
這個測試工具的功能
正規表達式是一種簡潔的模式,用來描述一組字串——電子郵件的格式、日期、電話號碼,或任何反覆出現的文字結構。本工具會用瀏覽器的 JavaScript 正規表達式引擎編譯你輸入的模式,並在你每次修改時立刻套用到測試文字上,不需要另外按「執行」。每一處符合的內容都會直接在文字上標示出來,詳細面板則會列出每一筆比對結果的捕獲群組與字元位置。
由於採用與 JavaScript、Node.js 中 RegExp 相同的引擎,你在這裡看到的結果,就和程式實際執行的結果完全一致。
什麼時候該用它
只要模式的行為不如預期,就可以先打開它。你不必到處插入 console.log 再重新執行腳本,只要貼上具代表性的文字、調整模式,標示就會即時跟著變化。從頭建立一個模式時也很好用:先寫得寬鬆一點,再慢慢收緊,直到只有想要的部分被點亮為止。
即時統計——比對總數、群組數量、模式與文字的長度,以及處理時間——能幫你在災難性回溯或不小心變得貪婪的量詞進到正式環境之前就發現它。
範例:辨識日期
假設你想從記錄檔中取出 ISO 格式的日期。模式 (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) 會比對到 2026-07-18,並將它拆成 year、month、day 三個具名群組。開啟旗標 g 後,文字中的每個日期都會被擷取,而不只是第一個。把 \d{2} 換成 \d{1,2},就連 2026-7-8 這種單位數的月份也會接受。
注意事項與邊界情況
旗標會徹底改變比對方式:i 讓比對不分大小寫,m 讓 ^ 與 $ 錨定到每一行,s 讓點號也能比對換行,u 則啟用完整的 Unicode 處理。請記得 . * + ? ( ) [ ] { } \ | ^ $ 這類字元具有特殊意義,若要照字面比對就必須用反斜線跳脫:想找一個字面上的點號,要寫成 \. 而不是會比對任何字元的 .。沒有名稱的群組會依照左括號出現的順序從 1 開始編號,而 (?:...) 則會建立一個不進行捕獲的群組。