正規式測試

正規式測試

即時比對、依旗標執行、列出所有捕獲群組

瀏覽器本地計算

表達式不帶兩側的 /;選擇標誌並輸入文本即可匹配。結果中的位置從 0 開始,計算超時會停止。

 

範例

輸入

正則表達式:(cat|dog)
標誌:g
文本:cat and dog

示例結果

#0  "cat"
  $1 = "cat"

#8  "dog"
  $1 = "dog"

位置從 0 開始。表達式輸入框不需要兩側的 / 分隔符。

技術細節與邊界

位置以 JavaScript UTF-16 碼元為單位。g 查找全部匹配,i 忽略大小寫,m 改變行首尾錨點,s 讓點號匹配換行,u 啓用 Unicode 模式。匹配在獨立 Worker 中運行並設超時,以減少複雜回溯對頁面的阻塞;最多展示 5000 條結果。

關於此工具

使用瀏覽器的 JavaScript 正則引擎測試表達式,查看匹配位置、完整匹配和捕獲組。支持 g、i、m、s、u、y 標誌,適合調試提取規則和學習零寬匹配。

適用場景

  • 寫日誌切分腳本前,驗證正規式能否覆蓋所有行。
  • 排查「幾乎能匹配」的表達式為何在某些行失敗。
  • 把命名捕獲群組挑出來看結構。

操作步驟

  1. 在“正則表達式”中輸入表達式,不帶首尾的 /。
  2. 在“標誌”中輸入 g(全局)、i(忽略大小寫)、m(多行)、s(點號匹配換行)、u(Unicode)或 y(粘連),每種標誌最多一次。
  3. 在“文本”中粘貼目標文本;修改任一項會自動重新匹配。

注意事項

本工具用 JavaScript 的 RegExp;與 PCRE / Go regexp / Java 在細節上不完全一致。

常見問題

匹配數量為何上限 5000?
避免惡意或錯誤表達式導致瀏覽器無回應。可修改表達式或裁短文字後再試。
為什麼全域旗標 g 沒生效?
確認 Flags 有輸入 `g`。若模式會匹配空串,本工具會自動步進防止死迴圈。
如何測試命名捕獲群組?
使用 `(?<name>...)` 語法即可,結果會以 `<name>` 單獨列出。
為甚麼在 PHP 或 Python 中結果不同?
它們使用的正則引擎及 Unicode、後行斷言、組名語法可能不同。此頁結果僅代表當前瀏覽器的 JavaScript 實現,上線前應在目標語言中復測。
為甚麼此處的結果與 PHP 或 Python 不同?
本工具使用瀏覽器的 JavaScript 正則引擎。其他語言可能有不同的語法、Unicode 行為和標誌含義,不能把這裡的測試結果當作所有引擎都通過。

相關工具

正規式測試 · 即時比對、依旗標執行、列出所有捕獲群組
正規式測試 — 工具示意圖 · dayeku.com