JavaScript 正規表達式測試與運作機制
正規表達式(Regular Expression)是用於定義字元模式的工具,廣泛應用於文字搜尋、資料驗證及特定格式擷取。本工具專為測試 JavaScript 語法的正規表達式而設,讓使用者在瀏覽器中即時輸入模式與測試文字,觀察比對結果。
在 JavaScript 中,正規表達式由「表達式」與「旗標」組成。本工具提供直觀的介面,讓使用者即時檢視每一個符合項(Match)以及擷取群組(Capture Group)的劃分狀況,協助排查比對邏輯中的錯誤。
旗標設定及其對比對行為的影響
旗標會直接改變正規表達式引擎的搜尋行為。本工具支援以下四種常見的 JavaScript 旗標,使用者可透過勾選進行組合:
- g (全域):尋找所有符合項,而不只是第一個。若未勾選此旗標,工具將僅返回第一個符合的結果。
- i (忽略大小寫):忽略英文字母的大小寫差異。
- m (多行模式):改變錨點字元
^和$的行為,使其分別符合每一行的開頭與結尾,而非僅符合整個輸入字串的開頭與結尾。 - s (讓. 也能符合換行符):預設情況下,萬用字元
.不會符合換行符號,啟用此旗標後則可符合包含換行符在內的任意字元。
測試輸入與輸出結果解讀
使用者需在工具中提供以下輸入內容:
- 表達式:輸入要測試的正規表達式模式,例如預設範例
\d+。 - 旗標:依需求勾選 g、i、m 或 s。
- 測試文字:輸入或貼上用於測試的文本內容。
輸入後,工具會即時呈現以下輸出資訊:
- 高亮符合結果:在測試文字中直接以視覺化高亮標示出所有符合的區段。
- 符合清單:列出所有比對成功的詳細結果。若表達式中包含括號定義的擷取群組,清單中會以「第
{n}組」標示出各個群組所擷取的具體子字串。 - 符合數:
{count}:顯示目前找到的符合項總數。 - 字元:顯示測試文字的總字元數。
運作限制與異常處理機制
為了確保瀏覽器運作穩定,本工具針對極端情況設有明確的處理規則:
- 語法錯誤:若輸入的正規表達式語法不合法,工具會顯示「不是合法的正規表達式。」。
- 無符合項:若文字中找不到任何匹配內容,會顯示「沒有符合項。」。
- 數量限制:在啟用全域(g)旗標時,工具最多僅比對 1,000 個符合項,且最多僅顯示 100 個符合結果卡片。當超過顯示上限時,會提示「只顯示前
{max}個。」。 - 效能保護:若正規表達式撰寫不當(例如巢狀重複結構),可能會導致「災難性回溯」(Catastrophic Backtracking),使瀏覽器卡死。本工具設有 2 秒的執行時間限制,一旦比對超時,將自動中止並顯示「這個表達式跑得太久了——可能觸發了災難性回溯,試著簡化一下。」。
- 清空功能:點擊「清空」按鈕可清除所有輸入與輸出,並顯示「已清空。」。
瀏覽器本地處理與隱私說明
本工具的運作完全基於用戶端瀏覽器。你輸入的正規表達式、旗標以及測試文字,皆直接在你的瀏覽器本地進行運算與比對,過程中沒有任何資料會上傳到 BroBroGo 伺服器。
常見問題
把文字貼到這裡安全嗎?
安全。比對完全在你的瀏覽器內進行,不會傳送到 BroBroGo。
g/i/m/s 這幾個旗標分別是什麼意思?
g 表示尋找所有符合項,而不只是第一個。i 表示忽略大小寫。m 讓 ^ 和 $ 符合每一行的開頭結尾,而不只是整個字串。s 讓 . 也能符合換行符。
為什麼提示我的表達式跑得太久?
某些寫法會觸發災難性回溯——正規表達式引擎要嘗試指數級數量的組合才會放棄,可能會卡死整個瀏覽器分頁。這個工具會在 2 秒後強制取消過慢比對,所以頁面本身不會被卡住。可以試著簡化巢狀重複的寫法,例如 (a+)+。