tomai
登入
免費 · 開發者工具

正規表示式測試

即時測試正規:比對高亮、擷取群組分解、取代預覽

/ /
常用模式
比對結果
結果

  
語法速查
\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、$ 語法預覽取代結果。g、i、m、s、u、y 六個旗標一鍵切換,內建 Email、URL、IPv4、日期、十六進位顏色、電話號碼等常用模式庫和語法速查表。引擎就是 JavaScript 內建的那個,和瀏覽器裡跑的完全一致,測試通過就是上線效果。適合前端開發者、測試人員和一切處理文字的人。

這款工具能做什麼

  • 🔦 輸入即時標示所有比對
  • 🧩 編號與命名捕獲群組逐一分解,標註比對位置
  • 🔁 使用 $1 / $ 語法預覽取代結果
  • 🚩 支援 g、i、m、s、u、y 旗標
  • 📚 內建模式庫:Email、URL、IPv4、日期、顏色、電話
  • 📖 內建語法速查表

什麼時候會用到

  • 為表單欄位撰寫驗證用的正規表示式
  • 排查正規表示式比對過多或過少的問題
  • 撰寫依賴捕獲群組的文字處理腳本
  • 使用社群現成模式之前先驗證一遍

隱私:模式與測試文字只在瀏覽器本地運算,不上傳伺服器,也不會被記錄。免費使用。

相關工具