正規表示式測試
即時測試正規:比對高亮、擷取群組分解、取代預覽
\d \w \s數字、單詞字元、空白^ $ \b開頭、結尾、單詞邊界* + ? {n,m}0+、1+、可選、區間(…) (?:…) (?<name>…)擷取、非擷取、命名[abc] [^abc] [a-z]任一、排除、範圍a|b (?=…) (?!…)或、前瞻斷言被關住的災難性回溯
形如 (a+)+$ 的巢狀量詞會讓匹配器探索指數級路徑——經典 ReDoS 陷阱:
- 本測試器把你的正則放進帶步數預算的 Worker;失控匹配會被中止並報告,而不是凍死分頁。
- 看到「已中止」就代表這條正則上線同樣危險——伺服器逾時救不了平方級引擎迴圈。
- 常見修法:讓內層分組無歧義、兩端加錨點、以字元類取代貪婪巢狀。
這個測試器如何安全地執行正規表達式
比對即時反白顯示
模式、測試文字與取代詞隨輸入同步更新:比對以交錯顏色反白,計數即時更新,取代預覽支援 $1 與 $<name> 具名群組語法。
捕獲群組帶位置資訊
每個比對都會展開為帶編號與名稱的捕獲群組,連同取值與字元位置一起列出,上線之前就能看清模式的哪一部分捕獲了什麼。
旗標、常用庫與語法參考
g、i、m、s、u、y 六個旗標一鍵切換,六條現成模式涵蓋信箱、URL、IPv4、日期、十六進位顏色與電話號碼,語法參考逐項說明錨點、量詞、群組與環視。
常見問題
這裡用的是哪種正規風格?
瀏覽器內建的 JavaScript(ECMAScript)引擎。大部分語法與 PCRE 通用,但少數有別——例如沒有獨佔量詞,後顧斷言需要較新的瀏覽器。你在這裡測試的模式,行為與在 JS 程式碼中完全一致。
我的文字會被傳送到哪裡嗎?
不會。比對、分組與取代都使用瀏覽器原生 RegExp 在本機執行,因此你的模式和測試資料絕不離開頁面,也可離線使用。
正規會不會卡死頁面?
病態模式(災難性回溯)可能變慢,但只影響你自己的分頁。我們會推進零寬比對,並將結果上限設為 1 萬,以保持介面回應。對長文字請優先使用具體模式,避免 (a+)+ 這類巢狀量詞。
為什麼同一條正則在某些輸入上會卡死?
回溯成本取決於輸入形狀而不只是長度:aaaa…b 撞上 (a+)+b 會爆炸,aab 則瞬間完成。攻擊者專門構造這種病態字串——任何面向使用者的正則上線前,請先用長同字元串測一遍。
相關工具
什麼是正規表示式測試器?
正規表示式是文字搜尋與取代的利器,也是程式設計裡最容易出錯的工具之一——多一個反斜線、少一個量詞,比對結果就完全不一樣,紙上推演再正確,碰到真實資料也常翻車。這個測試器讓你看清楚模式實際做了什麼:測試文字中的每個比對都會即時標示,編號與命名捕獲群組逐一分解並標註位置,還能用 $1、$
這款工具能做什麼
- 🔦 輸入即時標示所有比對
- 🧩 編號與命名捕獲群組逐一分解,標註比對位置
- 🔁 使用 $1 / $
語法預覽取代結果 - 🚩 支援 g、i、m、s、u、y 旗標
- 📚 內建模式庫:Email、URL、IPv4、日期、顏色、電話
- 📖 內建語法速查表
什麼時候會用到
- 為表單欄位撰寫驗證用的正規表示式
- 排查正規表示式比對過多或過少的問題
- 撰寫依賴捕獲群組的文字處理腳本
- 使用社群現成模式之前先驗證一遍
隱私:模式與測試文字只在瀏覽器本地運算,不上傳伺服器,也不會被記錄。免費使用。