操作教學
如何免安裝任何工具測試正則式
你寫好了一個樣式,想在把它放進程式碼之前確認它是否真的符合你的預期。為此安裝桌面工具,或把私密日誌貼到來路不明的網站,既小題大作又往往帶有風險。本指南示範如何直接在瀏覽器中以你自己的文字執行正則式、切換改變行為的旗標、讀取它擷取出的群組,並即時看見符合處在行內標示出來,而樣式與文字始終不離開你的分頁。
逐步教學
- 打開正則式測試器,在兩條斜線之間的欄位輸入你的樣式。斜線不用自己打:工具會顯示它們,讓你以引擎讀取的方式看見樣式。把範例文字貼進下方的方框,例如幾行日誌、一份電子郵件清單,或一段你想搜尋的程式碼。

- 在樣式旁的小方框裡設定旗標。g 旗標會找出每一處符合,而非在第一處就停下;i 讓比對不分大小寫;m 讓錨點 ^ 與 $ 比對每一行的開頭與結尾,而非整段文字;s 讓點號也能比對換行。你可以自由組合,例如 gim。
- 按下測試。每一處符合都會直接在你的文字中標示出來,而下方的清單會列出每一處符合,連同它的位置以及各個擷取群組的值。調整樣式後再執行一次:預覽會更新,讓你把樣式收窄到剛好捕捉你所要的、不多不少。

擷取群組:具名與編號
擷取群組就是你樣式中以括號包住的部分,它讓你從每一處符合裡取出一個片段,而不只是確認整體有符合。編號群組依其左括號由左至右計數:在 (\d{4})-(\d{2})-(\d{2}) 中,群組 1 是年、群組 2 是月、群組 3 是日。具名群組使用 (?<name>...) 語法,因此當樣式變長時,(?<year>\d{4}) 遠比一個光禿禿的編號好讀。如果你只想分組而不擷取,例如要對數個字元套用量詞,請使用非擷取群組 (?:...),以免它擠滿你的結果清單。測試器會顯示每一處符合的每個群組的值,這是確認你正擷取到正確片段的最快方法。
當樣式卡住或行為失常時
有兩個問題一再出現。第一個是災難性回溯:像 (a+)+$ 這樣的樣式若對一長串不符合的字串執行,會讓引擎嘗試指數量級的路徑而當機。測試器在 Web Worker 中執行每一次測試並附帶一個短暫的看門狗,因此你得到的不是卡死的分頁,而是一則清楚的訊息,並能簡化樣式,通常是讓量詞在精神上具占有性、為它加上錨點,或避免巢狀重複。第二個是貪婪與懶惰比對:.* 預設會盡量抓取,因此若要比對單一個 HTML 標籤的內容,你應改用懶惰形式 .*?。如果你在比較一個字串兩個略有差異的版本,以判斷你的樣式該瞄準什麼,文字差異工具會把它們對齊,讓差別在你動手寫表達式之前就一目了然。
瀏覽器如何評估你的 regex
現代瀏覽器內建了 ECMAScript regex 引擎,支援完整的旗標集:不區分大小寫匹配(i)、多行模式(m)、dotAll(s)、Unicode(u)和黏性旗標(y)。當你在測試器中輸入模式時,引擎將其編譯為內部 NFA,並即時對你的測試字串進行評估,報告每個匹配位置和任何捕獲組。回溯在你的 CPU 上本機發生:像 (a+)+ 這樣的模式在長的不匹配字串上可能旋轉數秒,在瀏覽器中看到這種停頓是在生產代碼中部署模式前有用的反饋。任何文字都不離開頁面,因此你可以貼上日誌樣本或任何輸入,而不必通過第三方伺服器路由。
本指南使用的工具
常見問題
我的樣式或測試文字會被送到伺服器嗎?
不會。正則式在你自己瀏覽器的 Web Worker 中執行,所以你拿來測試的樣式與文字都留在分頁裡。這很重要,因為你貼上的文字往往是真實日誌、客戶名單或內部設定,正是你不想放到別人伺服器上的那類資料。在按下測試時打開開發者工具的網路面板,你會看到沒有任何請求把你的文字帶出去。頁面載入後,它在離線狀態下也照常運作。
測試器使用哪一種正則式風味?
它使用你瀏覽器內建的 JavaScript 正則表達式引擎,也就是在 Node.js 與任何網頁中執行的同一個引擎。它涵蓋常見語法:字元類別、量詞、錨點、選擇、編號與具名擷取群組、前瞻與後顧。其他風味的少數功能,例如 Perl 式的遞迴或占有量詞,並不屬於 JavaScript 引擎,因此若你從某個 PHP 或 Python 專案複製來的樣式表現不同,通常正是這種風味差異所致。