跳到主要內容

← 返回部落格

正規表達式入門:實用速查表

正規表達式在你看懂各部件之前像亂碼,一旦通了,它就是你最好用的工具之一。這是一份新手也記得住的速查表。

字元類別

  • . —— 任意字元(換行除外,除非設 s 旗標)。
  • \d —— 數字;\D —— 非數字。
  • \w —— 單字字元(字母、數字、底線);\W —— 相反。
  • \s —— 空白;\S —— 非空白。
  • [abc] —— a、b、c 其中之一。[a-z] —— 範圍。[^abc] —— 除了 a、b、c 以外。

量詞(數量)

  • * —— 零或多個。+ —— 一或多個。? —— 零或一個(可選)。
  • {3} —— 剛好 3 個。{2,4} —— 2 到 4 個。{2,} —— 2 個以上。
  • 在量詞後加 ? 變成惰性(盡量少配):.+?

錨點與邊界

  • ^ —— 字串開頭(設 m 時為每行開頭)。$ —— 結尾。
  • \b —— 單字邊界 —— 很適合整字比對,如 \bcat\b

群組與交替

  • ( … ) —— 擷取群組;比對到的文字會記成第 1、2⋯ 群組。
  • (?: … ) —— 擷取的群組(只用於結構)。
  • a|b —— 配 a b。

旗標

  • g —— 找出所有比對,而非只有第一個。
  • i —— 忽略大小寫。
  • m —— ^$ 依每行比對。
  • s —— 讓 . 也配換行。

幾個實用範式

  • 只有數字:^\d+$
  • 簡單日期:\d{4}-\d{2}-\d{2}
  • 單字:\b\w+\b
  • 粗略的 email:[^@\s]+@[^@\s]+\.[^@\s]+

(真正的 email 驗證出了名地難 —— 這種粗略樣式用於快速檢查沒問題,但不適合做到完全符合 RFC。)

省下大把時間的技巧

  • 逐步建構。 先寫一小段再加上去,邊看比對即時更新。
  • 跳脫特殊字元,若你要它的字面意義:\.\?\(
  • 小心貪婪的 .* —— 它會盡量抓;過頭時改用 .*? 或更精確的類別。
  • 用真實資料測試,包括你預期會失敗的邊界情況。

學最快的方法是邊打邊看比對反白。在免費的正規表達式測試器即時試 —— 它會反白每個比對並列出擷取群組,全程在你的瀏覽器。