Flags ?
無匹配結果
工具說明
關於正則表達式測試器
Regex Tester 用來在文字上即時測試 JavaScript 正則表達式,查看匹配結果、捕獲組與索引位置。
適合除錯 email、URL、日誌行、提取規則與表單驗證模式,全部在瀏覽器本機執行。
如何使用 Regex Tester
- 輸入正則表達式,不需要外層 / /。
- 依需求開啟 g、i、m、s、u、y flags。
- 貼上測試文字,查看每個匹配、捕獲組與位置。
常見使用場景
- 驗證表單規則是否誤擋合法輸入。
- 從 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 與換行情況。