正則表達式測試器

免費線上 Regex 測試:輸入正則表達式與測試文字,比對結果即時高亮並列出位置與分組,可切換 g、i、m、s、u 旗標,另附常用範本。語法與 JavaScript 相同。

立即使用正則表達式測試器(免費、免註冊)

上面輸入正則表達式(不用加前後的 /),下面貼測試文字,比對到的地方會即時用黃色標出,表格列出每個比對的位置、比到的文字與 $1、$2 分組、具名分組。可以勾 g、i、m、s、u 5 種旗標,或點 6 個常用範本(Email、台灣手機、網址、日期…)直接套用;語法錯誤會顯示原因,超過 2 秒自動中止。語法與 JavaScript 相同,在瀏覽器執行、文字不上傳。

看懂比對結果

打開頁面時的預設範例:正則 \d+、旗標 g,測試文字「訂單 A123 共 2 件,合計 1,580 元」。下方明細會是:

預設範例的比對明細

#1 位置 4:123
#2 位置 10:2
#3 位置 17:1
#4 位置 19:580

「位置」是從 0 開始數的字元索引(中文字、空白都算 1;emoji 這類特殊字元算 2)。注意 1,580 被拆成 1 和 580:\d+ 只比連續的數字,逗號不算。想把千分位當成一個數字,要把逗號寫進規則:

連千分位一起比

/\d{1,3}(?:,\d{3})*/g
→ 123、2、1,580

沒勾 g 時只列出第一個比對(跟 JavaScript 的 match 一樣);勾了 g 最多列 1,000 個,下方表格顯示前 200 筆,文字很長時黃色高亮只畫前 30,000 字,但比對數是整段文字的結果。

常用範本實際比到什麼

點範本會同時換掉正則、旗標與測試文字。以下是每個範本用它自帶的範例文字跑出來的結果:

Email

/[\w.+-]+@[\w-]+(\.[\w-]+)+/g
範例:聯絡 amy@example.com 或 sales@autoagent.com.tw
→ amy@example.com、sales@autoagent.com.tw

台灣手機

/09\d{2}-?\d{3}-?\d{3}/g
範例:0912-345-678、0987654321
→ 0912-345-678、0987654321

網址

/https?:\/\/[^\s,。、))]+/g
範例:請看 https://autoagent.com.tw/tools 或 http://example.com。
→ https://autoagent.com.tw/tools、http://example.com

數字(含小數)

/-?\d+(\.\d+)?/g
範例:溫度 -3.5 度,濕度 80%
→ -3.5、80

中文字

/[\u4e00-\u9fff]+/g
範例:Hello 世界,你好 world
→ 世界、你好

日期 YYYY-MM-DD

/(\d{4})-(\d{2})-(\d{2})/g
範例:2026-09-13 與 2026-12-31
→ 2026-09-13、2026-12-31

範本是常見寫法,不是嚴格驗證:例如 Email 範本不會檢查網域存不存在,台灣手機只認 09 開頭、中間可有可無的連字號。實際用在表單驗證時,前後加上 ^ 與 $ 才會要求整個欄位都符合。

分組、旗標、貪婪:實測對照

具名分組:明細會列出名稱與內容

/(?<year>\d{4})-(?<month>\d{2})/g
#1 位置 0:2026-09 $1=2026 $2=09 year=2026 month=09
#2 位置 10:2026-12 $1=2026 $2=12 year=2026 month=12

旗標勾與不勾,實際比到幾個(g 都有勾)

i:/apple/ 比「Apple」
  不勾 0 個|勾了 1 個
m:/^\d+/ 比兩行「1 蘋果」「2 香蕉」
  不勾 1 個|勾了 2 個
s:/a.b/ 比 a、換行、b
  不勾 0 個|勾了 1 個
u:/\p{Script=Han}+/ 比「𠮷野家」
  不勾 0 個|勾了 1 個
旗標速記
旗標作用
g列出全部,不勾只列第一個
i不分大小寫
m^ $ 對每一行
s. 也比換行
uUnicode 模式

貪婪與非貪婪:同樣比「<b>粗體</b>」

/<.+>/  → <b>粗體</b>
/<.+?>/ → <b>、</b>

+ 和 * 預設「能吃多少吃多少」,所以 <.+> 一路吃到最後一個 >;後面加 ? 變成「吃到夠就停」,才會一個標籤一個標籤分開。

中文與罕用字

比對「𠮷野家」

[\u4e00-\u9fff]+(範本)→ 野家
\p{Script=Han}+(勾 u)→ 𠮷野家

常用範本的 [\u4e00-\u9fff] 涵蓋常用漢字,但「𠮷」這種擴充區的罕用字不在範圍內,會被漏掉。需要完整涵蓋時,勾選 u 旗標並改用 \p{Script=Han};沒勾 u 的話,\p{…} 不會被當成字元類別,會比不到東西。

中文沒有空白分詞,\b(單字邊界)只對英文、數字有用;要比「整個欄位」請用 ^ 與 $。

限制與做不到的事

  • 只有比對、沒有取代:工具只列出比到的內容;要取代,可以在 JavaScript 用 text.replace(/正則/g, "$1"),$1、
    lt;名稱> 就是明細表裡的分組。
  • 語法是 JavaScript 的:Python 的具名分組寫法 (?P<名稱>…) 在這裡是語法錯誤,要改成 (?<名稱>…);其他語言特有的語法請以目標語言實測為準。
  • 旗標只有這幾種:可勾選的是 g、i、m、s、u;y(黏著)與 d(索引)這類旗標沒有提供。
  • 跑太久會被中止:比對在背景執行,超過 2 秒會停下來並提示,頁面不會卡住;常見原因是 (a+)+ 這種重複裡又有重複的寫法。
  • 不會保存:正則與文字只在目前的分頁,重新整理就回到預設範例;常用的規則請自己記下來。

正則表達式測試器功能特點

  • 邊打邊比對,結果即時高亮
  • 列出每個比對的位置、$1 $2 分組與具名分組
  • g、i、m、s、u 旗標勾選切換
  • 常用範本:Email、台灣手機、網址、數字、中文字、日期
  • 語法錯誤直接顯示原因
  • 比對超過 2 秒自動中止,災難性回溯不會卡死頁面
  • 在瀏覽器執行,文字不上傳

如何使用正則表達式測試器?

  1. 輸入正則表達式(不用加前後的 /)
  2. 勾選需要的旗標
  3. 貼上測試文字,或點常用範本載入例子
  4. 看高亮結果與下方的比對明細

正則表達式測試器常見問題

旗標有什麼作用?

g:找出全部比對(不勾只找第一個);i:忽略大小寫;m:多行模式,^ 和 $ 對每一行的開頭結尾;s:讓 . 也能比對換行;u:Unicode 模式,正確處理 emoji 等超出基本平面的字元。

這裡的語法跟哪個程式語言一樣?

跟 JavaScript 的 RegExp 一樣(本工具就是用瀏覽器內建的 RegExp 執行)。Python、PHP、Java 的大部分常用語法相同,但少數進階語法(例如部分後顧、條件式)可能不同,請以目標語言實測為準。

怎麼取出分組內容?

用小括號包起來的部分是分組,比對明細會列出 $1、$2…;用 (?<名稱>…) 寫的具名分組會另外列出名稱與內容。在 JavaScript 取代時可以用 $1 或

lt;名稱> 引用。

比對中文要注意什麼?

中文字可以用 [\u4e00-\u9fff] 比對常用漢字(常用範本「中文字」就是這個);要比對 emoji 或罕用字,建議勾選 u 旗標。

正則跑很久,頁面會卡住嗎?

不會。比對在背景執行,超過 2 秒會自動中止並提示。會跑很久通常是「災難性回溯」:像 (a+)+$ 這種重複裡又有重複的寫法,遇到比對不到的長字串時,嘗試次數會以倍數增加;請改成不重疊的寫法(例如 a+$)。

貪婪和非貪婪(.* 和 .*?)差在哪?

.* 會盡量多比,.*? 比到最短就停。例如在「<b>粗體</b>」裡找標籤,<.+> 會比到整串 <b>粗體</b>,<.+?> 才會分別比到 <b> 和 </b>。

可以用這個工具取代(replace)文字嗎?

目前只做比對,不提供取代。先在這裡確認規則比得正確,再到程式或編輯器裡做取代;JavaScript 寫法是 text.replace(/正則/g, "新文字"),要引用分組就寫 $1 或

lt;名稱>。

怎麼讓正則只比對整個字,不要比到一部分?

英文用 \b 單字邊界:\bcat\b 在「cat concat」裡只比到 1 個。要求整個欄位都符合(例如驗證表單)就前後加 ^ 與 $,例如 ^09\d{8}$。中文沒有空白分詞,\b 不適用。