正則表達式測試與除錯技巧:從入門到寫出高效正則

文字(更新於 2026年4月23日)

為什麼要線上測試正則?

正則表達式語法複雜、難以一次寫對。線上測試工具可以:

  • 即時匹配高亮:輸入正則和文字,立即看到匹配結果
  • 分組擷取視覺化:清晰顯示每個擷取組的內容
  • 多旗標測試:快速切換 g/i/m/s 旗標
  • 錯誤即時回饋:語法錯誤立即標紅提示

正則語法速查

基礎匹配

語法 含義 範例 匹配
. 任意字元(除換行) a.c abc, a1c
\d 數字 \d{3} 123
\w 字母/數字/底線 \w+ hello_1
\s 空白字元 a\sb a b
[abc] 字元集 [aeiou] a, e, i
[^abc] 排除字元集 [^0-9] 非數字

量詞

語法 含義 貪婪/非貪婪
* 0 次或多次 a* / a*?
+ 1 次或多次 a+ / a+?
? 0 次或 1 次 a? / a??
{n,m} n 到 m 次 a{2,4}

分組與引用

語法 含義 範例
(abc) 擷取組 (\d{4})-(\d{2})
(?:abc) 非擷取組 (?:http|https)://
\1 反向引用 (\w)\1 匹配 aa, bb
(?<name>) 命名組 (?<year>\d{4})

使用線上正則工具

步驟

  1. 開啟 正則表達式測試工具
  2. 在正則輸入框中輸入正則表達式
  3. 在測試文字框中輸入待匹配文字
  4. 選擇需要的旗標(g 全域 / i 忽略大小寫 / m 多行)
  5. 查看匹配結果和高亮

常用旗標

旗標 含義 預設
g 全域匹配(找所有) 否(只找第一個)
i 忽略大小寫 區分大小寫
m 多行模式 單行
s . 匹配換行符 . 不匹配換行
u Unicode 模式

常見陷阱

1. 貪婪匹配問題

文字: <div>hello</div><div>world</div>
正則: <div>.*</div>
結果: <div>hello</div><div>world</div>  ← 整段被匹配!

修復: <div>.*?</div>  ← 非貪婪,匹配兩個

2. 回溯災難

// 危險:巢狀量詞導致指數級回溯
/^(a+)+$/.test('a'.repeat(30) + 'b');
// 這個測試可能需要數秒甚至卡死

// 修復:避免巢狀量詞,或使用原子組

3. 忘記跳脫特殊字元

正則: price.com     ← . 匹配任意字元
修復: price\.com    ← 只匹配 price.com

實用正則範例

場景 正則表達式
手機號 ^1[3-9]\d{9}$
信箱 ^[\w.-]+@[\w-]+\.[\w.]+$
URL ^https?:\/\/[\w.-]+(?:\.[\w]+)+[/\w.-]*$
IP 位址 ^(\d{1,3}\.){3}\d{1,3}$
日期 YYYY-MM-DD `^\d{4}-(?:0[1-9]
中文字元 [\u4e00-\u9fa5]+

常見問題

正則在工具裡匹配但程式碼裡不匹配?

檢查是否遺漏了 g 旗標,或者程式碼中的字串包含換行符但正則沒有 m/s 旗標。

如何匹配多行文字?

使用 s 旗標讓 . 匹配換行符,或使用 [\s\S] 代替 .


總結

正則表達式是開發者的必備技能,但語法複雜容易出錯。使用 正則表達式測試工具 可以即時驗證、快速除錯,大幅提升開發效率。工具庫還提供 文字尋找取代文字對比 等配套工具,一站滿足文字處理需求。

#正则表达式#Regex#文本处理#教程#调试