跳至主要內容
教學

正則表達式入門:一份實用的生存指南

· 8 分鐘閱讀

正則表達式看起來就像有人把鍵盤砸了一遍。但一旦你掌握了語法,它會成為開發者工具箱裡最實用的工具之一。

本文用真實例子帶你入門,不講廢話。

字元:基礎磚塊

正則由「匹配某個東西」的指令組成:

  • a — 字元 a
  • \d — 任何數字(等同於 [0-9]
  • \w — 任何字母、數字或底線
  • \s — 任何空白字元(空格、Tab、換行)
  • . — 任何字元(除了換行)

把它們組合起來,就有了像 \d\d\d 這種「匹配三個數字」的樣式。

數量:單個還不夠

光匹配單個字元沒什麼用,我們想匹配「一段」。

  • * — 0 次或多次
  • + — 1 次或多次
  • ? — 0 次或 1 次
  • {n} — 恰好 n 次
  • {n,m} — n 到 m 次

例如 \d{3}-\d{4} 匹配 555-1234 這種電話號碼。

錨點:把樣式釘在位置上

  • ^ — 字串開頭
  • $ — 字串結尾
  • \b — 單詞邊界

^Error: 匹配以 “Error:” 開頭的行 —— 在日誌裡撈錯時超好用。

實戰例子

驗證 Email(夠用版)

^[\w.+-]+@[\w-]+\.[\w.-]+$

不完美,但能擋掉 99% 的拼錯。

擷取 URL 中的網域

https?://([^/]+)

擷取群組 ([^/]+) 抓的就是網域。

把空白規範化成單個

\s+

替換為單個空格。

驗證 ISO 日期

^\d{4}-\d{2}-\d{2}$

只驗格式,不驗有效性(2026-13-99 也會通過)—— 那是另一篇文章的事。

旗標:開關

  • g — 全域匹配(不止第一個)
  • i — 忽略大小寫
  • m — 多行模式
  • s — 點號也匹配換行

/error/gi 在整段文字中不分大小寫地找所有 “error”。

常見陷阱

  1. 貪婪 vs 懶惰* 預設貪婪。<.*> 會吃掉整行;用 <.*?> 才會一個個匹配。
  2. 要跳脫.([ 這些特殊字元要寫成 \.\(\[
  3. 正則不擅長解析 HTML — 別試。等真要做時用專門的解析器。

練習場

讀正則最好的方式不是看教學,而是在自己的程式碼裡用它。從一行日誌解析開始,下一個專案中你會自然而然地寫出更複雜的樣式。

如果想線上練習,試試我們的 正則測試工具 —— 即時高亮匹配 + 擷取群組視覺化。