正則表達式測試器:即時比對測試
測試 JavaScript 正則表達式,立即查看每個比對項目、位置與擷取群組。
輸入模式、選擇旗標、貼上測試文字,再按下測試按鈕。所有操作都在瀏覽器中使用原生 JavaScript 正則引擎執行,不會上傳任何內容。
正則表達式測試器:即時比對測試
測試 JavaScript 正則表達式,立即查看每個比對項目、位置與擷取群組。
快速參考:常用正則標記
撰寫 JavaScript 正則表達式時最常用標記的速查表。
| 標記 | 意義 |
|---|---|
| . | 除換行符號外的任意單一字元(除非設定 s 旗標) |
| \d / \D | 數字 0–9 / 非數字字元 |
| \w / \W | 單字字元(字母、數字、底線)/ 非單字字元 |
| \s / \S | 空白字元 / 非空白字元 |
| ^ / $ | 字串開頭 / 結尾(設定 m 旗標時為每行開頭與結尾) |
| \b | 單字邊界——單字字元與非單字字元之間的邊緣 |
| * + ? | 前一項出現零次或多次 / 一次或多次 / 零次或一次 |
| {n} {n,} {n,m} | 恰好 n 次 / 至少 n 次 / 重複 n 到 m 次 |
| [abc] [^abc] | 集合中的任意字元 / 不在集合中的任意字元 |
| (x) | 擷取群組——比對文字會儲存並顯示在群組欄 |
| (?:x) | 非擷取群組——組合模式但不儲存比對結果 |
| a|b | 交替——比對 a 或 b |
| (?=x) (?!x) | 前瞻:後續文字必須(或不得)比對 x,但不消耗它 |
關於正則表達式測試器
正則表達式是開發者工具箱中最強大的文字處理工具之一,也最容易出現隱蔽錯誤。這個測試器讓你互動式開發與除錯 JavaScript 正則表達式:輸入模式、選擇旗標、貼上範例文字,即時查看比對次數、每個比對的起始位置、擷取群組內容,以及比對在文字中的位置。
本工具使用瀏覽器內建的正則引擎,因此這裡看到的行為與正式環境中的 JavaScript、TypeScript 和 Node.js 完全一致。不同語言的正則方言並不相同,針對 PCRE 或 Python 調整的模式也不一定能直接轉換;使用真實的 JavaScript 引擎測試可以消除猜測。
五個最常用的旗標都可透過核取方塊啟用。全域旗標會讓引擎繼續尋找並報告所有比對,通常適合計數或擷取值。忽略大小寫旗標讓字母不分大小寫。多行旗標改變插入符號與美元錨點,使其比對每行開頭和結尾。dotAll 旗標允許點號跨越換行,Unicode 旗標則啟用完整碼點模式,讓表情符號和基本多文種平面之外的字元被視為單一字元。
模式無法編譯時,測試器會顯示引擎自己的語法錯誤,而不是靜默失敗。零長度比對會被安全處理,寬鬆的上限也能防止失控模式影響頁面。
所有操作都在瀏覽器本機完成。模式和測試文字絕不會傳到伺服器,因此貼上日誌、設定檔或其他敏感資料也很安全。常見用途包括為表單建立驗證模式、從日誌列擷取欄位、為編輯器撰寫尋找取代表達式,以及在將標記寫入程式碼前了解其行為。結合結果表與下方速查表,可以快速迭代出正確且易讀的模式。
正則表達式測試範例
幾個經典模式,以及它們能從一般文字中找到什麼。
| 模式 | 比對內容 | 備註 |
|---|---|---|
| [\w.+-]+@[\w-]+\.[\w.]+ | 類似 ana@example.com 的電子郵件地址 | 用於擷取的實用郵件比對器;真實地址驗證需要的不只是正則表達式。 |
| \bcat\b | 獨立的 cat 單字,但不比對 concatenate | 單字邊界會阻止部分單字比對;加入 i 旗標也能擷取 Cat 和 CAT。 |
| (\w+)-(\w+) | 如 user-name 的連字號組合,並擷取兩半 | 兩個擷取群組會出現在群組欄,可直接用於取代範本。 |
| ^\s+|\s+$ | 字串開頭與結尾的空白 | 搭配 g 和 m 旗標可清理每一行,這是常見的清理模式。 |
如何使用正則表達式測試器
- 在模式欄輸入或貼上正則表達式,不要加外圍斜線。
- 勾選需要的旗標——全域旗標預設開啟,因此會報告所有出現位置。
- 將要搜尋的範例文字貼到測試文字框中。
- 按下測試編譯模式並執行,然後查看比對表、擷取群組與醒目文字。
- 調整模式並重新測試,直到醒目結果完全符合預期。
正則表達式測試器常見問題
這個測試器使用哪種正則風格?
它使用瀏覽器中的原生 JavaScript(ECMAScript)引擎,與 Node.js 和網頁應用程式使用的引擎相同。這裡驗證的模式在 JavaScript 程式碼中行為一致,但用於 Python、PCRE 或 Java 前可能需要調整。
需要把模式包在斜線中嗎?
不需要。只輸入模式主體,就像傳給 new RegExp() 一樣。旗標透過核取方塊選擇,不要附加在結尾斜線後。
為什麼只報告第一次出現?
你可能取消了 g(全域)旗標。沒有它,JavaScript 引擎在第一次命中後就會停止。勾選 g 並重新測試即可列出所有出現位置。
什麼是擷取群組,在哪裡查看?
模式中的括號會建立擷取群組,儲存每次命中的子部分。結果表的群組欄會列出每個群組擷取的內容,適合製作取代範本或解析結構化字串。
我的文字會傳送到伺服器嗎?
絕不會。編譯與比對完全在瀏覽器分頁內進行,因此可以安全地測試日誌、權杖或私人文件。關閉頁面後所有內容都會捨棄。
為什麼我的模式顯示語法錯誤?
常見原因包括括號或方括號未閉合、量詞前沒有內容,或 Unicode 旗標拒絕某個跳脫。顯示的訊息直接來自 JavaScript 引擎,並指出有問題的結構。