寫給初學者的正規表達式
更新 2026-07-06
正規表達式素來有難懂的名聲 —— 像 ^\d{3}-\d{4}$ 這樣一堵符號的牆。但其核心思想很簡單,而懂一點正規表達式,是任何跟文字打交道的人槓桿最高的技能之一。本指南從零講起。
正規表達式是什麼
正規表達式(regex)是一個描述一組字串的 模式。你不是去找某個確切的詞,而是描述你要找之物的 形狀 —— 「三個數字、一個短橫、再四個數字」 —— 引擎會找出所有符合的文字片段。它用於尋找取代、驗證輸入(信箱、電話號碼),以及從文字裡擷取資料。
字面字元
最簡單的正規表達式就是文字。模式 cat 會比對輸入中任何位置的 c-a-t 字母。大多數字元比對它們自己 —— 威力來自少數幾個特殊字元。
核心構件
字元類 —— 什麼樣的字元
\d—— 任意數字;\w—— 單詞字元;\s—— 空白。.—— 任意一個字元。[aeiou]—— 集合中的任意一個字元;[a-z]—— 一個範圍。
量詞 —— 有多少個
*—— 零個或多個;+—— 一個或多個;?—— 零個或一個(可選)。{3}—— 恰好三個;{2,4}—— 二到四個之間。
錨點 —— 在哪裡
^—— 字串的開頭;$—— 字串的結尾。
讀一個真實的例子
現在開頭那堵符號的牆講得通了:
^\d{3}-\d{4}$
^ start of string
\d{3} exactly three digits
- a literal dash
\d{4} exactly four digits
$ end of string它比對一個 只 是 7 位電話號碼(如 555-1234)的字串 —— 前面沒有別的,後面也沒有。
別忘了跳脫
要比對一個平常是特殊字元的字元 —— 一個字面的點或問號 —— 就在它前面加個反斜線:\. 比對一個真正的點。忘掉這一點是初學者頭號錯誤,因為 . 否則會比對 任意 字元。
保持練習
學得最快的辦法是拿模式去試真實文字,看它比對到什麼。一邊做一邊開著 正規表達式速查表,並用像 尋找取代 這樣的工具把模式套用到你自己的文字上。一旦正規表達式想通了,那些原本枯燥的活兒 —— 重排一個清單、擷取每一個 URL、驗證輸入 —— 都變成了一行程式碼。
更多 網路與開發者
查看全部 網路與開發者 指南 →本指南提到的工具