正規表示式測試器
新測試正規表示式,即時標示比對結果,支援擷取群組與取代預覽。
Match highlight
Matches & groups
Replace
Regex cheatsheetquick reference
- \d \D
- digit / non-digit
- \w \W
- word char / non-word char
- \s \S
- whitespace / non-whitespace
- .
- any char (except newline without s flag)
- ^ $
- start / end of string (line with m flag)
- \b \B
- word boundary / non-boundary
- [abc] [^abc]
- char set / negated set
- [a-z0-9]
- char range
- a* a+ a?
- 0+ / 1+ / 0 or 1
- a{3} a{2,5} a{2,}
- exactly 3 / 2–5 / 2 or more
- a*? a+?
- lazy (non-greedy) quantifiers
- (abc)
- capture group → $1
- (?<name>abc)
- named group → $<name>
- (?:abc)
- non-capturing group
- a|b
- alternation (a or b)
- \1 \k<name>
- backreference
- (?=abc) (?!abc)
- lookahead / negative lookahead
- (?<=abc) (?<!abc)
- lookbehind / negative lookbehind
- \n \t \r
- newline / tab / carriage return
- \. \* \\
- escaped literal . * \
Runs entirely in your browser. Nothing is uploaded.
即時在真實 JavaScript 環境中測試正規表達式
這款免費的 正規表達式測試工具 在你輸入的同時立即高亮顯示所有比對結果,使用的是你瀏覽器原生的 JavaScript regex 引擎——因此這裡的比對結果與你的前端程式碼或 Node.js 中的結果完全一致。你可以自由切換六種旗標(g、i、m、s、u、y),無效的模式會直接顯示引擎的錯誤訊息,而不是靜默失敗。
高亮顯示下方提供完整的比對清單——每個比對結果含位置及所有擷取群組(編號與命名皆支援)——以及取代面板,可在輸入時即時預覽以 $1、$<name>、$& 為反向參照的替換結果。模式確認無誤後,點擊複製為 JavaScript 程式碼即可取得可直接貼上的程式碼。
比 regex101.com 與 regexr.com 更專注的替代方案
像 regex101.com 這樣的重量級測試工具支援 PCRE、Python、Golang 和 .NET 等多種引擎——在比較不同引擎時很有用,但當你只是想除錯一個 JS 模式時,往往功能過多。regexr.com 則提供社群模式與參考指南。兩者都需要在多個分頁間切換,才能從比對結果導航到取代預覽。
這款線上正規表達式測試工具在一個簡潔的畫面上回答日常最重要的三個問題:是否有比對、擷取了什麼內容、取代後的結果是什麼?無需選擇引擎,無需帳號,無需上傳。不像 regexpal.com(僅顯示高亮)或 debuggex.com(著重視覺軌道圖),本工具新增了逐比對擷取群組展開功能及支援反向參照的即時取代預覽。
常用正規表達式模式,一鍵載入
內建的模式庫提供經過實戰驗證的模式,並附有真實範例文字:電子郵件地址、URL、IPv4 位址、ISO 日期、24 小時制時間、十六進位顏色碼、URL slug、國際電話號碼、數字(整數/浮點數)及 HTML 標籤。每種模式都附有有效與無效的範例,讓你清楚看到模式的邊界。
這些模式是起點,而非定論——直接在原處調整,觀察高亮的即時反應。範例刻意包含邊緣案例(例如 IPv4 的 999.999.1.1),讓你了解每個模式拒絕什麼,而不只是接受什麼。這比從 Stack Overflow 複製一個模式後猜測它是否處理你的邊緣案例快得多。
擷取群組、前後顧斷言與六種旗標——完整支援
現代 JavaScript 正規表達式具備強大功能:命名群組 (?<year>\d{4})、前瞻 (?=…) 與後顧 (?<=…)、帶 u 旗標的 Unicode 屬性跳脫,以及帶 y 旗標的黏性比對。本工具完整支援所有這些功能,因為它就是 JavaScript 引擎本身。比對面板會逐比對展開每個群組,讓擷取邏輯一目了然。
m 旗標示範是最受歡迎的功能之一:啟用後,^ 和 $ 會錨定到測試文字的每一行——貼入日誌檔案,觀察 ^ERROR 模式如何高亮每一行有問題的記錄。切換 s 旗標讓 . 符合多行字串中的換行符號,無需額外的變通方案。你在這裡看到的每一個結果,都與你的程式碼實際產生的結果相同。
透過內建速查表更快學會正規表達式
可收折的正規表達式速查表涵蓋日常常用的語法——字元類別(\d \w \s)、錨點(^ $ \b)、量詞(* + ? {n,m} 及其懶惰形式)、群組、選擇符、反向參照及四種前後顧斷言。在實驗時保持展開狀態;即時看到語法的比對效果是讓正規表達式真正內化的最快方式。
從簡單開始:比對一個文字詞、加上字元類別、再加量詞、再加群組。在正規表達式練習場中五分鐘的即時回饋,比花一小時閱讀語法表更有效。同時也支援行動裝置——版面會自動適應較小的螢幕,讓你在 iPhone 或 Android 上也能除錯模式,完全無需安裝任何應用程式。
Frequently asked questions
正規表達式測試工具是什麼?
正規表達式測試工具是一種互動式工具,你輸入一個正規表達式和一些範例文字後,它會立即高亮顯示所有比對結果。這款測試工具可顯示擷取群組的值——包括編號與命名——支援六種 JavaScript 旗標(g、i、m、s、u、y),提供含反向參照的即時取代預覽、常用模式庫及完整速查表。你可以在將模式放入程式碼之前除錯並驗證,完全無需安裝任何程式或建立帳號。
這款工具與 regex101.com 和 regexr.com 相比如何?
regex101.com 和 regexr.com 都很出色,但功能可能較為繁複——多種引擎、完整除錯器、測驗、社群模式。這款工具專注於 JavaScript 引擎,回答日常最重要的三個問題:是否有比對、擷取了什麼、取代結果是什麼?它載入迅速、將你的工作儲存在本機、完全在瀏覽器中執行,並透過 URL 編碼連結分享模式——雙方都不需要帳號。與支援 PCRE、Python 和 Golang 的 regex101 不同,本工具執行你瀏覽器的原生 JavaScript 引擎,結果完全精確。
這與 regexpal.com 或 debuggex.com 有何不同?
有所不同。Regexpal 提供簡單的高亮顯示,但不支援擷取群組分解,也沒有取代預覽。Debuggex 新增了視覺軌道圖,但缺乏常用模式庫。本工具新增了逐比對擷取群組展開、支援 $1/$<name>/$& 反向參照的即時取代面板,以及附有真實範例文字的內建模式庫——同時執行真實的 JavaScript 引擎,結果與你的程式碼完全一致。所有功能在離線狀態下均可使用,無需上傳。
Regex 是什麼意思?
Regex 是「regular expression(正規表達式)」的縮寫——一串定義搜尋模式的字元。正規表達式幾乎在每種程式語言和文字編輯器中都用於比對、擷取、驗證及尋找並取代文字操作。這個術語可追溯到 1950 年代和數學家 Stephen Cole Kleene,但正規表達式的實際應用是在 1980 年代隨著 Perl 語言的出現而爆發性成長。
如何在 JavaScript 中測試正規表達式?
在 JavaScript 中有幾種選擇:使用 regex.test(str) 進行真/假檢查,str.match(regex) 取得比對文字,str.matchAll(regex) 取得含群組詳細資訊的所有比對,或使用 regex.exec(str) 逐一迭代比對。本工具在你輸入時即時執行上述所有操作——「複製為 JavaScript 程式碼」按鈕可提供你模式的確切程式碼,直接貼入專案即可使用。
正規表達式中的擷取群組是什麼?
括號 ( ) 建立一個擷取群組,儲存其中比對到的內容,可透過 $1、$2 等方式擷取。以 (?<name>...) 寫成的命名群組讓你可以透過名稱而非編號來參照擷取內容。擷取群組讓你能夠提取比對的特定部分——例如從電子郵件地址中提取使用者名稱和網域——或在取代操作中重複使用它們。本工具的比對面板列出每個比對的每個群組值,讓你在將擷取邏輯用於正式程式碼之前輕鬆驗證。
正規表達式旗標 g、i、m、s、u 和 y 各代表什麼?
g(全域)尋找所有比對而非在第一個比對後停止;i(忽略大小寫)讓比對不區分大小寫;m(多行)使 ^ 和 $ 比對每一行的開頭和結尾,而非整個字串;s(dotAll)讓點號也比對換行符號;u(Unicode)啟用完整的 Unicode 支援及 \p{Letter} 等屬性跳脫;y(黏性)將比對錨定到 lastIndex。本工具中六種旗標均可單擊切換。
正規表達式預設是區分大小寫的嗎?
是的——/hello/ 比對「hello」但不比對「Hello」。切換 i(忽略大小寫)旗標可讓模式不區分字母大小寫。這是驗證邏輯中常見的錯誤來源——例如一個電子郵件正規表達式因為忘記加 i 旗標而無法比對「User@Example.COM」。
JavaScript 中 match、test 和 exec 有什麼區別?
test() 回傳布林值——當你只需要知道是否有比對時使用。match() 在字串上呼叫,回傳比對陣列或 null。exec() 在正規表達式上呼叫,一次回傳一個詳細比對,並在設定 g 旗標時逐步推進。matchAll() 在一次呼叫中回傳所有含完整群組詳細資訊的比對——通常是擷取工作的最佳選擇。本工具在底層執行 matchAll 並在比對面板中呈現所有結果。
正規表達式中的前瞻和後顧是什麼?
前瞻 (?=...) 在不消耗字元的情況下檢查當前位置後面是否有某個模式;負前瞻 (?!...) 則相反。後顧 (?<=...) 和 (?<!...) 對前面的內容做相同的檢查。它們適用於「比對後面沒有跟著百分比符號的數字」或「比對前面有金錢符號的單詞」等條件。四種前後顧類型在本工具中均可使用,因為現代 JavaScript(V8)完整支援它們。
正規表達式在所有程式語言中都相同嗎?
不——正規表達式的引擎差異顯著。JavaScript、PCRE(PHP 和 Perl 使用)、Python 的 re 模組、.NET、Java 和 Ruby 各自支援不同的語法和功能。PCRE 支援 JavaScript 沒有的佔有量詞和原子群組;Python 使用 (?P<name>...) 而非 (?<name>...) 來命名群組;.NET 新增了平衡群組。本工具執行真實的 JavaScript/V8 引擎,結果與你的前端程式碼或 Node.js 完全一致。
如何使用正規表達式進行尋找並取代?
在 JavaScript 中,str.replace(/pattern/g, '取代文字') 會替換所有比對結果。在取代字串中使用 $1 或 $<name> 插入擷取群組,使用 $& 代表整個比對。本工具的取代面板在你輸入時即時預覽結果,讓你在將替換操作寫入程式碼前確認效果。你也可以使用函式作為取代參數進行更複雜的轉換——例如將每個比對結果的首字母大寫。
正規表達式中 \d、\w 和 \s 代表什麼?
\d 比對任意數字(0–9),\w 比對文字字元(字母、數字或底線),\s 比對空白字元(空格、Tab、換行)。它們的大寫形式 \D、\W 和 \S 比對相反的內容——即 \d、\w 和 \s 不比對的所有字元。內建速查表列出這些語法及其他所有常用語法和範例。字元類別是大多數實際模式的基本構成元素。
為什麼我的正規表達式比對了太多內容(貪婪比對)?
* 和 + 等量詞預設是貪婪的——它們會盡可能抓取更多文字再回頭。加上 ? 使其變為懶惰模式(.*?),讓它們盡可能少抓取。另一個選擇是使用否定字元類別,例如 [^"]* 以在特定分隔符號處停止。將你的文字貼入本工具,你就能並排看到貪婪與懶惰的差異高亮顯示——這是理解發生了什麼的最快方式。
這款正規表達式測試工具免費嗎?可以分享模式嗎?
完全免費,無廣告,無需註冊。「複製分享連結」將你的模式、旗標和測試文字編碼到 URL 中,讓同事打開後看到與你完全相同的內容——雙方都不需要帳號。你的工作也會自動儲存在瀏覽器本機,下次返回時仍然存在。與需要登入才能永久儲存和分享模式的 regex101 不同,本工具可即時產生可分享的 URL。