正則表達式測試器

測試正則表達式匹配結果

Flags ?
測試文字
匹配結果
無匹配結果

工具說明

關於正則表達式測試器

Regex Tester 用來在文字上即時測試 JavaScript 正則表達式,查看匹配結果、捕獲組與索引位置。

適合除錯 email、URL、日誌行、提取規則與表單驗證模式,全部在瀏覽器本機執行。

如何使用 Regex Tester

  1. 輸入正則表達式,不需要外層 / /。
  2. 依需求開啟 g、i、m、s、u、y flags。
  3. 貼上測試文字,查看每個匹配、捕獲組與位置。

常見使用場景

  • 驗證表單規則是否誤擋合法輸入。
  • 從 logs 或文字中提取 ID、URL、錯誤碼。
  • 比較 greedy 與 lazy 量詞對匹配範圍的影響。

Flags、捕獲組與常見陷阱

JavaScript 正規表示式對 flags、跳脫與量詞很敏感。少一個反斜線或過寬的 .* 都可能讓結果完全不同。

  • g 會返回所有匹配;沒有 g 通常只看第一個。
  • i 忽略大小寫,m 讓 ^ 和 $ 依行匹配。
  • 括號會建立 capture group;(?: ) 可避免不需要的捕獲。
  • 複雜回溯可能讓長文字變慢,避免過多巢狀量詞。

正則測試常見問題

要輸入 /pattern/g 這種寫法嗎?
不用。这里只輸入 pattern,flags 在獨立控制項設定。
為什麼匹配範圍比預期更長?
常見原因是 .* 或 .+ 預設貪婪,可嘗試 .*? 或更具體的字元類別。
測試文字會上傳嗎?
不會。匹配在瀏覽器本機執行,不會上傳到 wetool.site。

Regex Tester 與正式環境驗證

線上測試能快速驗證 pattern,但正式環境驗證還要涵蓋邊界案例、空值、Unicode 輸入與後端正規表示式引擎差異。

災難性回溯排查清單

一個能 match 的正規表示式也可能在長輸入上卡住。上線前尤其要檢查巢狀量詞與過寬的萬用字元。

  • 避免 (.*)+、(.+)+、(a|aa)+ 這類容易爆炸的巢狀或重疊模式。
  • 能寫成明確字元類別時,不要預設用 .*;例如用 [^,]* 代替貪婪的跨欄位比對。
  • 對使用者控制的輸入做長度限制,並在伺服器設 timeout 或使用支援安全執行的正規表示式引擎。

JavaScript 正規表示式與其他語言差異

線上測試通過不代表能直接搬到後端。不同正規表示式引擎在 flags、lookbehind、Unicode 與具名擷取上可能不同。

  • JavaScript 的 g、i、m、s、u、y flags 與 PCRE、Python、Go options 不完全等價。
  • Lookbehind、Unicode property escapes、named groups 在舊瀏覽器或部分後端 environment 中可能不可用。
  • 遷移到後端前,用目標語言單元測試覆蓋空值、長輸入、emoji 與換行情況。