正規表達式測試
即時測試 JavaScript 正規表達式,標示比對結果與擷取群組。
輸入樣式與測試文字,結果會隨輸入即時更新。
比對結果標示
取代結果
比對明細
| # | 位置 | 比對內容 | 群組 |
|---|
這個工具做什麼
用真實文字測試 JavaScript 正規表達式,立刻看到所有比對結果。樣式不必加前後斜線,勾選需要的旗標,再貼上範例文字:比對到的部分會直接在原文中標示,表格列出每筆結果的位置與擷取群組(編號與具名群組都有),狀態列則顯示總數。填入取代字串可預覽 String.prototype.replace 的結果,支援 $1、$& 與 $<name> 等引用。樣式有誤時會顯示瀏覽器原生的錯誤訊息,方便在貼進程式碼前先修正。因為使用的就是瀏覽器本身的引擎,這裡能跑的樣式在 Node.js、Deno 與前端程式裡同樣適用。
正規表達式速查表
. | 換行以外的任一字元(加 s 旗標後含換行) |
\d \w \s | 數字;單字字元(字母、數字、_);空白 |
\D \W \S | \d、\w、\s 的相反 |
[abc] [a-z] [^abc] | 集合中的一個字元、範圍,或不在集合內的任一字元 |
^ $ | 文字的開頭與結尾(加 m 旗標後是每一行) |
\b \B | 單字邊界;非單字邊界 |
a* a+ a? | 0 次以上;1 次以上;0 或 1 次 |
a{3} a{2,5} a{2,} | 恰好 3 次;2 到 5 次;至少 2 次 |
a*? a+? a?? | 非貪婪版本:盡量少比對 |
a|b | a 或 b |
(…) (?:…) | 擷取群組;不擷取的群組 |
(?<name>…) | 具名群組,取代時以 $<name> 引用 |
\1 $1 $<name> | 樣式內回溯引用;取代字串內引用群組 |
(?=…) (?!…) | 正向與負向前瞻 |
(?<=…) (?<!…) | 正向與負向後顧 |
\. \\ \/ | 跳脫特殊字元,比對其字面值 |
\u{1F600} \p{L} | 碼位與 Unicode 屬性跳脫(需要 u 旗標) |
注意事項
- 沒有勾選 g 旗標時只會回報第一筆比對,與 regex.exec() 的行為一致。
- 零長度的比對(例如加 m 旗標的 ^,或 \b)會以細線標記顯示,不會造成無窮迴圈。
- 後顧(lookbehind)、具名群組與 Unicode 屬性跳脫在目前所有主流瀏覽器都支援,只有非常舊的瀏覽器可能不接受。
- 會造成災難性回溯的樣式在長文字上可能讓分頁卡住;請盡量用明確的字元集合取代巢狀量詞。
- 本工具採用 JavaScript 語法。PCRE、Python、Java 的正規表達式大多相容,但佔有量詞、原子群組與 (?i) 這類行內修飾子無法使用。
隱私
樣式與測試文字只在你的瀏覽器內處理,不會上傳或儲存。