正規表達式測試器如何運作?
正規表達式測試器直接在瀏覽器中執行比對,使用與你的 web 應用程式相同的 JavaScript 引擎。輸入一個模式,選擇語法(JavaScript、PCRE 或 Python),切換旗標如 g(全域)、m(多行)或 i(不區分大小寫),比對結果即時高亮顯示。
實測顯示,對於長達 10,000 個字元的字串,比對評估在 5ms 以內完成——你還沒打完就能看到結果。捕獲群組會逐一列出,無需執行程式碼就能驗證 (group) 語法和反向引用的行為。JavaScript 語法遵循 ECMAScript 正規表達式規範,PCRE 語法則使用 PCRE2 引擎。
為什麼要使用正規表達式測試器?
正規表達式測試器省去了「撰寫—執行—檢查」的循環。幾個具體的使用情境:
- 表單驗證:將 Email 正規表達式如
/^[^@]+@[^@]+\.[^@]+$/ 貼入,針對邊緣情況字串測試,接入前端邏輯前先確認正確性。 - 日誌解析:直接對原始日誌行測試模式,提取時間戳記或錯誤代碼,不必另外撰寫測試腳本。
- 日期擷取:在樣本文字上使用
(\d{4})-(\d{2})-(\d{2}),確認每個捕獲群組正確填入。 - 跨語法遷移:將 Python
re 程式碼遷移至 JavaScript 的開發者可直接比較行為差異,具名群組語法不同((?P<name>) vs (?<name>))。 - 學習正規表達式:即時高亮讓旗標行為一目了然——切換
/hello/ 的 i 旗標,馬上看到不區分大小寫的比對結果。
如需參考,MDN 正規表達式指南詳細說明了每個 JavaScript 旗標。
我應該選擇 JavaScript 還是 PCRE 語法?
瀏覽器程式碼、Node.js 或任何基於 V8 引擎的專案,選 JavaScript;PHP、C/C++、Nginx 設定或 grep -P 指令,選 PCRE。Python 使用自己的 re 模組,行為接近 PCRE,但缺少佔有量詞和原子群組等功能。
關鍵差異:JavaScript 舊版引擎不支援回顧後斷言(ES2018 才加入),PCRE2 則全面支援。具名捕獲群組在 JavaScript 使用 (?<name>...),在 PCRE 使用 (?P<name>...)——這是常見的遷移陷阱。實測中,在 Atoolin 的正規表達式測試器切換語法後,模式會立即重新評估,跨語法比較一鍵即可完成。更多詳情請參閱 PCRE2 官方文件。
常見問題
- 什麼是正規表達式測試器?它是如何運作的?
- 正規表達式測試器是一款瀏覽器工具,能即時評估正規表達式模式並高亮顯示比對結果。輸入模式、選擇語法(JavaScript、PCRE 或 Python),加上 `g` 或 `i` 等旗標,結果立即呈現。捕獲群組會逐一列出,無需執行程式碼即可驗證群組語法。
- JavaScript(ECMAScript)和 PCRE 正規表達式有什麼區別?
- JavaScript 正規表達式在瀏覽器和 Node.js 中執行,遵循 ECMAScript 規範;PCRE 則用於 PHP、C/C++ 和 Nginx。主要差異:PCRE 支援佔有量詞和原子群組;JavaScript 直到 ES2018 才加入回顧後斷言。具名捕獲群組語法不同:JavaScript 用 `(?<name>...)`,PCRE 用 `(?P<name>...)`。
- 如何在正規表達式中使用捕獲群組?
- 用括號包住模式的特定部分:`(\d{4})-(\d{2})-(\d{2})` 建立三個捕獲群組,分別捕獲年、月、日。在 JavaScript 中用 `match[1]`、`match[2]`、`match[3]` 存取結果。具名群組使用 `(?<year>\d{4})`,透過 `match.groups.year` 引用。