正則表達式測試器

免登入・本機計算・資料不上傳

輸入正則表達式(regex)與測試文字,即時高亮所有符合的地方、列出捕獲群組,內建常用範例可以一鍵套用。邊打邊看結果,寫壞的樣式也不會讓網頁卡死。

例:檢查使用者輸入的手機號碼、統編格式對不對,或是想確認一段規則到底會抓到哪些字。

全程在你的瀏覽器本機執行,內容不會上傳到任何伺服器。

//g

怎麼算的?

比對邏輯本身丟進瀏覽器的 Web Worker(獨立於畫面主執行緒)執行,主執行緒送出比對請求後設一個時間上限(1 秒), 在時限內收到結果就正常顯示;沒收到就直接呼叫 worker.terminate() 強制砍掉那個執行緒, 不管它卡在哪一步,並提示「執行逾時,可能是複雜度爆炸的樣式」,下一次比對會開一個全新的 Worker 繼續運作,不影響你繼續使用頁面。 這是唯一真正有效的保護方式——JS 主執行緒被同步卡住時,一般常見的「設定逾時」寫法(setTimeoutPromise.race)其實完全排不上用場。

高亮結果與匹配清單都是用瀏覽器原生 DOM API(createTextNodetextContent)逐段組出來的, 不會把你輸入的文字當成 HTML 語法解析、插入畫面,避免被惡意輸入的內容(例如貼入 <script> 標籤)影響頁面安全。

資料來源與依據

最後核對日期:2026-07-27

常見問題

正則表達式(regex)是什麼?一般人會用到嗎?

正則表達式是一種「描述文字規則」的語法,例如「開頭是 09、後面接 8 位數字」就能寫成一個 pattern 去檢查一串文字符不符合這個規則。工程師常用它做資料驗證、批次尋找取代;一般人比較會在「Excel/Google 表單的驗證規則」「網站表單的欄位格式檢查」這類地方間接用到,如果你只是想確認一段文字格式對不對,通常直接用這頁下方附的現成範例套用就好,不用自己會寫。

什麼是「捕獲群組」?

在 pattern 裡用括號 () 框起來的部分,代表「這段我要另外抓出來」。例如驗證 Email 時,用 (\w+)@(\w+) 把帳號和網域分別框起來,比對成功後除了知道「整串符合」,還能個別拿到帳號是什麼、網域是什麼,這頁的結果會把每個匹配的捕獲群組個別列出來。

為什麼有些 pattern 會讓網頁卡住?這頁怎麼避免?

某些寫法的正則表達式(例如巢狀的重複符號)在特定輸入下,比對所花的時間會隨字串長度呈指數成長,業界稱為 catastrophic backtracking,寫壞的(或惡意設計的)pattern 可能讓瀏覽器直接凍結。這頁把比對邏輯丟到瀏覽器的 Web Worker(另一個獨立執行緒)執行,主畫面這邊設一個時間上限,超過就直接強制中斷該執行緒,所以就算你不小心測到一個會爆炸的 pattern,最多卡一下就會顯示「逾時已中止」,不會讓整個分頁真的凍住。

範例裡的身分證字號、統編是真的嗎?可以拿去產生假的證號嗎?

範例欄位裡的號碼都是隨手示範用的格式範例,不對應任何真人。這頁的範例 pattern 只做「格式檢查」(例如身分證字號是不是「1 個大寫字母 + 1 或 2 + 8 碼數字」這種輪廓),不包含檢查碼演算法,更不提供批次產生功能——本站刻意不做這類可能被拿去產生假身分證號碼的工具。