文字
正規表示式測試器
正規表示式測試器是一款只需輸入模式與測試文字,就能即時查看比對位置高亮、擷取群組內容、取代預覽以及按構成要素拆分的語法說明的工具。無論是 Web 開發中的表單驗證設計、從記錄檔中擷取 ID、對文字做一次性的批次取代,或是一邊動手一邊學習正規表示式,都能派上用場。
g
旗標正規表示式預設範本
測試文字
輸入模式與測試文字後,比對結果會顯示在這裡。
正規表示式語法說明
輸入模式後,按構成要素拆分的說明會顯示在這裡。
把目前的模式、旗標、測試文字與取代範本儲存到 URL,透過連結分享。
你輸入的模式與文字全程在瀏覽器中處理,不會傳送到任何伺服器。
相關工具
正規表示式測試器是什麼?
正規表示式測試器是一款只需輸入模式與測試文字,就能即時查看比對位置高亮、擷取群組內容、取代預覽以及按構成要素拆分的語法說明的工具。無論是 Web 開發中的表單驗證設計、從記錄檔中擷取 ID、對文字做一次性的批次取代,或是一邊動手一邊學習正規表示式,都能派上用場。
g / i / m / s / u / y 旗標可以個別切換;當模式不合法時,會立即在輸入欄下方顯示錯誤原因,不會讓頁面當掉。比對數量、擷取群組數量以及執行時間(毫秒)會與結果一同顯示,方便確認複雜模式的行為或大致評估效能。
電子郵件位址、URL、電話號碼(日本)、郵遞區號、IPv4、日期、HTML 標籤、十六進位色碼等常用模式都可以從預設選單中一鍵插入。在取代範本中可以使用 $& 表示整體比對、$1 $2 表示第 1、2 個擷取、$<name> 引用具名擷取,結果會在「比對結果」與「取代結果」兩個分頁之間切換。點擊「複製分享 URL」按鈕可以把目前的模式、旗標、測試文字與取代範本一併打包到 URL 中,分享給團隊成員。
所有處理都在你的瀏覽器內完成。你輸入的模式與測試文字不會傳送到任何伺服器,可以放心地在含有公司內部資訊或個人資料的文字上試用正規表示式。全程在瀏覽器中完成。
使用方法
- 在「模式」輸入欄中填入正規表示式。也可以從預設選單中一鍵插入電子郵件、URL 等常用模式。
- 切換右側的 g / i / m / s / u / y 旗標,控制全域比對、是否區分大小寫等行為。
- 把要比對的文字貼到「測試文字」輸入欄。可以用「插入範例」按鈕立即看到效果。
- 下方結果區會高亮所有比對位置,並顯示比對數、擷取群組與執行時間。
- 切換到「取代結果」分頁,在「取代範本」中填入取代後的字串(可以用 $1 或 $& 等引用),即可看到即時取代預覽。
- 在「正規表示式語法說明」中可以看到把目前模式按構成要素拆分後的繁體中文說明。
- 點擊「複製分享 URL」,目前的模式、旗標、測試文字與取代範本會被打包到 URL 中,他人透過這條連結就能重現完全相同的畫面。
使用情境
- 希望先用實際字串驗證一遍表單驗證正規,再寫進正式程式碼的 Web 工程師。
- 需要從伺服器記錄檔、存取記錄檔中按規則擷取 ID、路徑或狀態碼的維運人員。
- 在對稿件或 CSV 資料做批次取代之前,想要安全地預覽取代效果的撰稿人與編輯。
- 在程式碼審查或技術分享中,希望用分享 URL 直接把正規表示式範例與測試案例發給同事的負責人。
- 在學習正規表示式時,想一邊動手一邊查看每個語法元素含義的初學者。
注意事項
- 本工具基於瀏覽器內建的 JavaScript 正規表示式(ECMAScript RegExp),不支援 PCRE 或 Oniguruma 特有的語法(例如 \K、可變長度的後顧斷言等)。
- 當 g 旗標未開啟時,比對與取代都只針對第 1 個結果。要處理全部比對請開啟 g 旗標。
- 開啟 u 旗標可以正確處理代理對與 Unicode 屬性(\p{...}),同時字元集合中的跳脫要求會變嚴格。如果行為變化請檢查 u 旗標的開關。
- 為避免極端情況下的卡頓,測試文字超過 50 萬字元時會在計算前被截斷,比對結果數最多保留 10,000 項。
- 由於「複製分享 URL」會把測試文字作為查詢字串放入 URL,請在分享前確認其中不包含敏感內容。當文字較長時會被自動從 URL 中省略,並在畫面上提示。
- 語法說明涵蓋了主要構成(字元類別、量詞、群組、選擇、字元集合)。前瞻、後顧以及 Unicode 屬性等會以「不支援的語法」按原文顯示。
常見問題
我輸入的模式與文字會傳送到伺服器嗎?
不會。模式編譯、比對、取代、語法說明以及執行時間的計時,全部在你的瀏覽器中完成。可以放心地在含有公司內部資訊或個人資料的文字上試用。
有 PCRE 模式嗎?
本工具只支援瀏覽器內建的 JavaScript 正規表示式引擎,不支援 PCRE 特有的語法(例如 \K、可變長度後顧、遞迴參照等)。如果是用於 Web 前端或表單驗證,本工具中的結果可以直接對應到正式環境的行為。
我沒有加 g 旗標,為什麼只比對 / 取代了 1 個?
JavaScript 的正規表示式在 g 旗標關閉時只處理第 1 個結果。要比對 / 取代全部請在旗標欄中開啟 g。兩個分頁在 g 關閉時都會顯示相應提示。
對方打開分享 URL 後,能看到完全相同的模式與結果嗎?
可以。連結中以查詢字串的形式包含了目前的模式、旗標、測試文字與取代範本,對方打開後就能在自己的瀏覽器中立即看到相同的比對與取代結果。但是當測試文字很長時會從 URL 中自動省略。
為什麼執行時間(毫秒)每次都會有些差異?
這是因為瀏覽器內部的 JIT 預熱、與其他分頁 / 工作共享 CPU、以及計時精度的限制等因素造成的。請把這個數字當作「修改模式前後是否大幅變化」的對比指標,而不是絕對值。