正規式測試
即時比對、依旗標執行、列出所有捕獲群組
表達式不帶兩側的 /;選擇標誌並輸入文本即可匹配。結果中的位置從 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 標誌,適合調試提取規則和學習零寬匹配。
適用場景
- 寫日誌切分腳本前,驗證正規式能否覆蓋所有行。
- 排查「幾乎能匹配」的表達式為何在某些行失敗。
- 把命名捕獲群組挑出來看結構。
操作步驟
- 在“正則表達式”中輸入表達式,不帶首尾的 /。
- 在“標誌”中輸入 g(全局)、i(忽略大小寫)、m(多行)、s(點號匹配換行)、u(Unicode)或 y(粘連),每種標誌最多一次。
- 在“文本”中粘貼目標文本;修改任一項會自動重新匹配。
注意事項
本工具用 JavaScript 的 RegExp;與 PCRE / Go regexp / Java 在細節上不完全一致。
常見問題
- 匹配數量為何上限 5000?
- 避免惡意或錯誤表達式導致瀏覽器無回應。可修改表達式或裁短文字後再試。
- 為什麼全域旗標 g 沒生效?
- 確認 Flags 有輸入 `g`。若模式會匹配空串,本工具會自動步進防止死迴圈。
- 如何測試命名捕獲群組?
- 使用 `(?<name>...)` 語法即可,結果會以 `<name>` 單獨列出。
- 為甚麼在 PHP 或 Python 中結果不同?
- 它們使用的正則引擎及 Unicode、後行斷言、組名語法可能不同。此頁結果僅代表當前瀏覽器的 JavaScript 實現,上線前應在目標語言中復測。
- 為甚麼此處的結果與 PHP 或 Python 不同?
- 本工具使用瀏覽器的 JavaScript 正則引擎。其他語言可能有不同的語法、Unicode 行為和標誌含義,不能把這裡的測試結果當作所有引擎都通過。
相關工具