免費轉換器

正規表達式 測試器

在瀏覽器中即時測試和除錯正規表達式。高亮匹配項、查看捕獲群組、使用替換模式——免費且私密。

//g
旗標:

關於此工具

正規表示式是一種用於匹配文字模式的特定於領域的語言。自 1968 年以來,它們一直是計算的一部分,現在已內建在每種現代程式語言、文字編輯器和命令列搜尋工具中。語法簡潔但容易出錯:微小的變化會產生細微不同的配對行為,複雜的表達式很快就會變得不可讀。在您編輯模式時即時顯示符合的測試程式是開發和驗證正規表示式的最有效方法。

此測試器使用 JavaScript 正規表示式引擎在您的瀏覽器中運行(如果應用程式在瀏覽器中運行,則與您的應用程式使用的引擎相同)。模式和測試文字反應式更新:每次變更都會重新執行匹配。反白顯示匹配組,列出捕獲的組,並公開標誌(不區分大小寫、多行、全局)以進行測試。

正規表示式語法在引擎之間略有不同。 JavaScript 遵循 ECMAScript 規範; Python、PCRE(PHP 和許多其他語言使用)、Java 和 Go 都有自己的方言,這些方言具有重疊但不完全相同的功能。這裡開發的模式使用 ECMAScript 語法;跨引擎可移植性需要檢查每個目標的文件。

為什麼要使用正規表示式測試器

眾所周知,正規表示式錯誤在部署後很難調試。看起來合理的模式可能比預期匹配更多或更少,在邊緣情況下失敗,或者在某些輸入上出現災難性的回溯。針對代表性輸入以互動方式測試模式可以在程式碼審查和生產之前捕獲問題。

模式也受益於文件。在應該匹配的輸入和不應該匹配的輸入旁邊顯示正規表示式可以使意圖明確。未來的維護者(包括六個月後的你自己)更欣賞記錄下來的測試案例,而不是聰明的俏皮話。

使用方法

輸入模式,輸入測試輸入,查看即時反白顯示的匹配項。

  1. 輸入您的圖案: 在模式欄位中輸入正規表示式模式。文字正規表示式(/pattern/flags)和僅模式形式都可以工作;可以透過標誌輸入來設定標誌。
  2. 新增測試輸入: 貼上模式應匹配的範例文字(最好也貼上不應匹配的文字)。測試人員根據輸入運行模式並反白顯示匹配項。
  3. 設置標誌: 常用標誌:g(全域,尋找所有符合項目)、i(不區分大小寫)、m(多行、^ 和 $ 匹配行開始/結束)、s(dotall、. 匹配換行符)、u(Unicode)。
  4. 檢查結果: 每個匹配項都會在輸入中突出顯示。捕獲組顯示在帶有組索引和值的清單中。測試器還顯示匹配的計數以及模式中的任何編譯錯誤。

常見用例

技術細節

JavaScript 正規表示式遵循 ECMAScript 規範。主要功能:字元類別 ([abc]、[^abc])、量詞 (*、+、?、{n,m})、交替 (|)、分組 ((...))、捕獲和非捕獲組、前向和後向(現代引擎)、反向引用、命名組、Unicode 屬性轉義(帶有 u 屬性標誌)和標準轉義序列集。

與 PCRE 和 Python 的重要區別:JavaScript 中最近才支援lookbehind(2018+);命名組使用 (?<name>...) 語法;某些 Unicode 轉義需要 u 標誌才能正常運作。應根據每個目標的文件檢查用於跨語言使用的模式。

效能:基於回溯的正規表示式引擎(大多數包括 JavaScript)可能會對某些病態模式產生災難性的回溯。使測試人員掛起的測試表明該模式需要簡化 - 通常透過避免嵌套量詞和不明確的交替來簡化。

最佳實踐

常見問題

該工具支援哪種正規表示式風格?
它使用 JavaScript 的內建 RegExp 引擎,該引擎支援標準語法,包括向前查找、向後查找(在現代瀏覽器中)、命名捕獲組和 Unicode 屬性轉義。
我可以測試正規表示式替換嗎?
是的。切換到替換模式以輸入替換模式。您可以使用 $1、$2 等來捕獲群組反向引用,使用 $<name> 來表示命名群組。
為什麼我的正規表示式在這裡的匹配與 Python/PHP 中的不同?
不同的程式語言的正規表示式引擎略有不同。 JavaScript 不支援所有格量詞或某些 PCRE 特定的功能。不同語言的核心語法(字元類、量詞、組)是相同的。
該工具是否保存我的正規表示式模式?
不會。不會儲存或傳輸任何內容。該工具完全在您的瀏覽器中運行。您可以透過複製正規表示式字串來新增書籤或共享模式。
如何匹配字面特殊字元?
用反斜線轉義它。若要符合文字點:\.要符合文字反斜線:\\.在字元類別[...]內,大多數特殊字元失去了它們的意義。
測試器是否在伺服器上運作?
不會。模式編譯和匹配是在瀏覽器中使用本機 RegExp 物件進行的。
我可以測試非 JavaScript 引擎的模式嗎?
大多。對於簡單的模式,主要引擎都同意。對於進階功能(lookbehind、原子組、所有格量詞、Unicode 屬性轉義),請根據目標引擎的文件進行確認。
它可以處理非常大的輸入嗎?
最多幾兆位元組也能順利工作。較大的輸入可能會減慢或掛起瀏覽器,特別是對於容易回溯的模式。