正規表達式測試器

在瀏覽器本地即時測試 JavaScript 正規表達式。

表達式
旗標
測試文字
高亮符合結果
輸入表達式即可開始測試。

你的表達式和文字會在瀏覽器本地測試,不會上傳到 BroBroGo。

常見問題

把文字貼到這裡安全嗎?

安全。比對完全在你的瀏覽器裡進行,不會傳送到 BroBroGo。

g/i/m/s 這幾個旗標分別是什麼意思?

g 表示尋找所有符合項,而不只是第一個。i 表示忽略大小寫。m 讓 ^ 和 $ 符合每一行的開頭結尾,而不只是整個字串。s 讓 . 也能符合換行符。

為什麼提示我的表達式跑得太久?

某些寫法會觸發災難性回溯——正規表達式引擎要嘗試指數級數量的組合才會放棄,可能會卡死整個瀏覽器分頁。這個工具會在 2 秒後強制取消過慢比對,所以頁面本身不會被卡住。可以試著簡化巢狀重複的寫法,例如 (a+)+。

JavaScript 正規表達式與測試原理

正規表達式(Regular Expression)是用於定義字串搜尋模式的工具,在網頁開發與資料處理中,常用於驗證輸入格式、搜尋特定文字或擷取關鍵欄位。本工具專為 JavaScript 規格的正規表達式設計,讓使用者能直接在瀏覽器中輸入模式與測試文字,即時檢視比對結果。

當你在「表達式」欄位輸入模式(例如預設範例 \d+)並於「測試文字」輸入內容時,系統會立即執行比對。比對結果會以「高亮符合結果」呈現,並在下方列出詳細的「符合清單」與「字元」統計。

旗標的功能與影響

JavaScript 正規表達式透過旗標來調整比對行為。本測試器提供四種常用旗標,其具體作用如下:

  • g(全域):尋找所有符合項,而不只是第一個。若未勾選此旗標,系統僅會傳回第一個符合的結果。
  • i(忽略大小寫):在比對時不區分英文字母的大小寫。
  • m(多行模式):改變錨點行為,使 ^$ 能分別符合每一行的開頭與結尾,而非僅限於整個輸入字串的開頭與結尾。
  • s(讓. 也能符合換行符):預設的句點 . 無法符合換行字元,啟用此旗標後,. 可符合包含換行符在內的任意字元。

解讀符合結果與擷取群組

比對完成後,工具會輸出詳細的統計資訊與結構化清單:

  • 符合數:{count}:顯示在測試文字中找到的符合項總數。
  • 符合清單:逐一列出每個符合的字串片段。
  • {n}:若你的正規表達式中包含括號 () 定義的擷取群組(Capture Groups),清單中會詳細標示出每個群組所擷取到的具體子字串。

為了確保瀏覽器運作流暢,當啟用全域(g)旗標時,工具設有輸出上限:最多僅會比對 1,000 個符合項,且「符合清單」中最多僅會顯示 100 個符合項目卡片。若超出此限制,系統會顯示「只顯示前 {max} 個。」的提示。

異常處理與效能限制

在撰寫正規表達式時,常會遇到語法錯誤或效能瓶頸,本工具針對以下邊界情況設有明確的處理機制:

  • 語法錯誤:若輸入的正規表達式語法不符合 JavaScript 規範,系統會即時顯示「不是合法的正規表達式。」。
  • 無符合項:若測試文字中沒有任何片段符合該模式,則會顯示「沒有符合項。」。
  • 災難性回溯(Catastrophic Backtracking):當正規表達式中包含巢狀的模糊重複結構(例如 (a+)+),在面對特定不匹配的長字串時,引擎會嘗試指數級數量的組合,導致瀏覽器卡死。本工具設有 2 秒的安全保護限制,一旦比對時間超過 2 秒,系統會自動取消比對,並顯示「這個表達式跑得太久了——可能觸發了災難性回溯,試著簡化一下。」。
  • 清空重置:點擊「清空」按鈕可清除所有輸入與輸出,並顯示「已清空。」。

瀏覽器本地處理與隱私保護

本工具的運作完全基於用戶端的瀏覽器環境。當你輸入測試文字與正規表達式時,所有的比對運算與資料處理皆在你的電腦本地完成,沒有任何資料會被上傳到 BroBroGo 伺服器。這確保了測試敏感文字或特定資料時的隱私安全。

常見問題

把文字貼到這裡安全嗎?

安全。比對完全在你的瀏覽器裡進行,不會傳送到 BroBroGo。

g/i/m/s 這幾個旗標分別是什麼意思?

g 表示尋找所有符合項,而不只是第一個。i 表示忽略大小寫。m 讓 ^ 和 $ 符合每一行的開頭結尾,而不只是整個字串。s 讓. 也能符合換行符。

為什麼提示我的表達式跑得太久?

某些寫法會觸發災難性回溯——正規表達式引擎要嘗試指數級數量的組合才會放棄,可能會卡死整個瀏覽器分頁。這個工具會在 2 秒後強制取消過慢比對,所以頁面本身不會被卡住。可以試著簡化巢狀重複的寫法,例如 (a+)+。