正規表示式測試器(JavaScript)

測試 JavaScript 正規表示式:醒目標示符合位置、編號與具名群組,並預覽取代結果;執行過久的樣式(ReDoS)會自動中止。

  • 在瀏覽器內處理(不上傳)

不需要前後的斜線(/)。例:\d+、(?<year>\d{4})

旗標

可使用 $1、$<name>、$&(整個符合內容)與 $$($ 本身)。

樣式最多 1,000 個字元、測試字串最多 100,000 個字元;超過 1 秒的比對會自動中止。

執行中…

使用方式

  1. 輸入正規表示式樣式,並勾選需要的旗標(g、i、m 等)。
  2. 輸入測試字串後,符合的位置會被醒目標示,並列出位置與群組。
  3. 輸入取代字串(可用 $1、$<name> 等)即可預覽取代結果並複製。

常見問題

使用哪一種正規表示式引擎?

使用你瀏覽器內建的 JavaScript 引擎(RegExp)。部分語法與行為和 PCRE、Python、Java 不同。

會不會讓頁面卡住?

不會。比對在獨立的 Web Worker 中執行,超過 1 秒就會停止 Worker 並顯示「執行過久」,即使遇到 ^(a+)+$ 這類災難性回溯,頁面仍可操作。

符合空字串的樣式會無限循環嗎?

不會。符合空字串後會前進到下一個位置(使用 u、v 旗標時以完整字元前進),因此不會無限循環。

注意事項與限制

  • 你輸入的內容只在此頁面處理,不會傳送到 YUCTS 的伺服器。
  • 樣式上限 1,000 個字元,測試字串上限 100,000 個字元;醒目標示與清單只顯示前 1,000 處。
  • 可用的語法與旗標(如 v、d)取決於瀏覽器版本,不支援的旗標無法勾選。
  • 1 秒的限制受裝置效能影響,較慢的裝置可能連一般樣式也會被中止。
  • Safari(JavaScriptCore)在回溯超過一定量時會自行停止搜尋並回報「沒有符合」。本工具會對耗時的執行顯示提醒,但無法判斷該結果是否正確。

資料來源