跳到主要內容

正規表示式線上測試 — JavaScript 正則測試工具

線上測試 JavaScript 正規表示式:即時高亮匹配,顯示捕獲組和命名組,支援所有標誌和替換預覽。耗時超過 1 秒的匹配會自動停止。

//g
標誌
速查表
.
除換行符外的任意字元(使用 s 標誌可包含換行)
\d \w \s
數字、單詞字元 [A-Za-z0-9_]、空白字元
\D \W \S
非數字、非單詞字元、非空白字元
[abc] [^abc]
a、b、c 之一 / 除 a、b、c 外的任意字元
[a-z]
a 到 z 之間的任意字元
^ $
輸入的開頭 / 結尾(使用 m 標誌時為每行的開頭 / 結尾)
\b
單詞邊界
* + ?
0 次或多次、1 次或多次、0 次或 1 次
{2,5}
2 到 5 次({3} 恰好 3 次,{2,} 至少 2 次)
*? +?
惰性版本:儘可能少地匹配
(abc)
捕獲組
(?<name>abc)
命名捕獲組
(?:abc)
非捕獲分組
\1 \k<name>
重複第 1 組 / 命名組匹配到的內容
a|b
a 或 b
(?=a) (?!a)
後面緊跟 a / 後面不是 a
(?<=a) (?<!a)
前面是 a / 前面不是 a
\p{L}
任意語言中的任意字母(需要 u 或 v 標誌)

使用瀏覽器的 JavaScript(ECMAScript)正則引擎,結果與 JavaScript 程式碼一致。PCRE、Python、Java 等其他引擎在部分語法上有所不同。匹配在後臺 Worker 中執行,超過 1 秒會停止,以防災難性回溯拖垮頁面。

使用方法

  1. 輸入正規表示式並勾選所需的標誌(g 會查詢所有匹配)。
  2. 貼上要測試的文字;匹配會被高亮,並列出其索引和捕獲組。
  3. 開啟“替換”,即可預覽使用 $1 或 $<name> 引用時 String.replace 的結果。

範例

表示式:(?<user>\w+)@(\w+)\.com  標誌:g
文字:alice@example.com, bob@test.com
匹配:alice@example.com(user = alice,2 = example)、bob@test.com
替換為 $<user> at $2 → alice at example, bob at test

功能與限制

表示式使用瀏覽器內建的 JavaScript RegExp 引擎執行,因此後行斷言、命名組、Unicode 屬性轉義和 d 標誌的行為與你的程式碼完全一致。v 標誌只在瀏覽器支援時顯示。

匹配在你裝置上的 Web Worker 中進行,不上傳任何內容。單次執行約 1 秒後會停止,最多列出 1,000 個匹配。

FAQ

為什麼我的正則只找到一個匹配?

在 JavaScript 中,沒有 g(全域性)標誌的正則會在第一個匹配處停止。勾選 g 即可查詢所有匹配,本工具會把它們全部列出。

什麼是災難性回溯?

某些表示式(如 (a+)+$ 或 (.*)*)在幾乎能匹配的文字上可能耗費指數級時間。本工具在獨立的 Worker 中執行正則,並在 1 秒後停止,因此頁面保持響應,並顯示錯誤提示。

在這裡測試過的正則能在 Python 或 PHP 中使用嗎?

通常可以,但不一定。本工具使用 JavaScript 引擎。Python、PHP(PCRE)和 Java 在命名組、後行斷言和標誌等方面的功能與語法有所不同,依賴這些特性的表示式請重新檢查。

格式參考資料

工具頁面更新日期: