開發者工具2026-05-10

正則表達式測試器:線上建構、測試與除錯 Regex

正則表達式是一種模式比對語言,能夠以任何手動字串操作無法比擬的精確度來尋找、提取、驗證與取代文字。但撰寫 regex 很困難——一個位置錯誤的量詞就會將精確的模式變成效能炸彈或無聲的不匹配。我們的 regex 測試器讓您可以撰寫模式、貼上或輸入測試資料,並在輸入的同時即時看到醒目標示的比對結果。它預設支援 JavaScript(ECMAScript 2024)語法,並可切換為 PCRE2(PHP)、Python 3、Java 與 .NET 風格——每種風格對 lookbehind、Unicode 屬性跳脫與回溯控制的處理方式不同。該工具以不同顏色視覺化捕捉群組,標記第一個匹配項目的確切字元位置,並在您的模式有災難性回溯風險時發出警告(例如,(a+)+b 對 "aaaaaaaaac" 進行比對——在 25 個字元時可能凍結執行緒,在 30 個字元時耗費的時間可能比宇宙年齡還長)。無論您正在為表單撰寫驗證規則、剖析日誌檔案,或使用尋找與取代進行程式碼重構,互動式測試您的 regex 都能節省時間並防止代價高昂的錯誤。

manage_search

正則表達式測試器

免費 · 無需註冊

免費試用此工具 →open_in_new

分步指南

1

撰寫您的 Regex 模式

在模式欄位中輸入您的正則表達式。工具接受字面 regex(前後有斜線,例如 /pattern/g)或裸模式字串。快速參考側邊欄列出常用標記——字元類別(d、w、s)、量詞(*、+、?、{n,m})、錨點(^、$、)與群組(捕捉、非捕捉、命名)。將滑鼠懸停在任意標記上會顯示工具提示,包含其含義與範例。

2

貼上測試資料並查看比對結果

將測試文字——範例 API 回應、日誌輸出、使用者輸入或程式碼——貼到測試資料區域中。比對結果會在您輸入或修改模式時即時醒目標示。每個捕捉群組都有顏色編碼:群組 0(完整比對)為藍色,群組 1 為綠色,群組 2 為橘色,命名群組則在圖例中顯示其名稱。比對位置(開始/結束索引)顯示在下方。

3

切換旗標與 Regex 風格

使用核取方塊啟用旗標:g(全域——尋找所有比對,而非僅第一個)、i(不區分大小寫)、m(多行——^ 與 $ 在行邊界比對,而非僅在整個字串的開頭/結尾)、s(dotall——. 比對換行字元)、u(Unicode——啟用 \u{...} 與 Unicode 屬性跳脫)以及 y(黏著)。透過下拉選單切換 regex 引擎風格,以確保您的模式在目標環境中能正確運作。

使用技巧與最佳實踐

check_circle

最常見的 regex 效能殺手是災難性回溯——當一個帶有巢狀量詞的模式(如 (a+)+b)在失敗前嘗試每種可能的輸入分割方式時。對於 25 個 "a" 字元的輸入,這可能需要超過 3300 萬次回溯步驟。修復方法:在引擎支援處使用所有格量詞(a++b)或原子群組((?>a+)b),或將模式改寫得更具體。

check_circle

惰性量詞(*?、+?、??、{n,m}?)比對盡可能少的字元,而非盡可能多。它們在比對分隔內容時不可或缺——例如,/<p>.*?<\/p>/ 會分別比對每個段落標籤對,而非從第一個 <p> 比對到最後一個 </p>(貪婪的 .* 會這麼做)。

check_circle

前瞻與後瞻斷言讓您可以根據文字前後的內容進行比對,而不會將該上下文包含在比對結果中。正向前瞻:/foo(?=bar)/ 僅在 "foo" 後接 "bar" 時比對 "foo"。負向後瞻:/(?<!\\)\$/ 僅在美元符號前沒有反斜線時比對它。JavaScript 在 ES2018 中新增了後瞻支援。

check_circle

命名捕捉群組讓 regex 大幅提升可讀性。與其使用 /(\d{4})-(\d{2})-(\d{2})/ 搭配數字群組參照,不如使用 /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/ 並按名稱參照群組:match.groups.year。Python、JavaScript、PCRE 與 .NET 都支援此語法。

check_circle

Unicode 屬性跳脫(\p{...})讓您可以比對整個字元類別,而無需逐一列出每個字元。例如,\p{Script=Han} 比對任何漢字,\p{Emoji} 比對表情符號,\p{Lu} 比對任何文字系統中的大寫字母。這比手動列出 Unicode 範圍更為穩健。

check_circle

對於電子郵件驗證,根據 RFC 5322 唯一正確的 regex 超過 200 個字元長,且仍不完美。對於實務表單驗證,先使用簡單的模式如 /^[^\s@]+@[^\s@]+\.[^\s@]+$/ 作為初步過濾,然後發送確認電子郵件。不要試圖用 regex 驗證電子郵件規範中的每個邊界情況——regex 不是適合這項工作的工具。

check_circle

旗標會顯著改變 regex 行為。g 旗標執行全域搜尋(多個比對),沒有它時僅回傳第一個比對。u 旗標啟用完整的 Unicode 支援——沒有它時,像 /\w{2,}/ 這樣的模式在使用非 ASCII 字元時可能會出現意外行為。對於現代 JavaScript regex,務必設定 u 旗標,除非您確定不需要 Unicode。

check_circle

針對邊界情況測試您的 regex,而非僅測試正常路徑輸入。空字串、僅包含特殊字元的字串、最大長度的字串與 Unicode 文字都能暴露缺陷。regex 測試器讓您可以儲存測試案例集並一次性對一個模式執行所有案例。

常見問題解答

雖然核心 regex 語法(\d、+、*、^、$、群組)是通用的,但每個引擎都有獨特的功能與怪癖。PCRE2(PHP 與許多 CLI 工具使用)支援遞迴模式、所有格量詞與 callout。JavaScript(ECMAScript)缺少所有格量詞與 \Q...\E 引用,但具有後瞻(ES2018)。Python 支援使用 (?P<name>...) 的命名群組——與 JavaScript 的 (?<name>...) 不同。Java 需要在字串字面值中對反斜線進行雙重跳脫(\d 在程式碼中變成 \\d)。.NET 支援用於比對巢狀結構的平衡群組。

Regex 是開發者工具箱中最強大的工具之一——也是最容易出錯的工具之一。互動式測試可以在無聲的不匹配、回溯炸彈與跨引擎不相容問題進入生產環境之前就捕捉到它們。我們的免費 regex 測試器支援四種主要引擎風格,且完全在您的瀏覽器中執行。立即開始測試您的模式。

免費試用此工具 →open_in_new