正規表達式速查表
正規表達式(regex)是用於匹配文字的模式 —— 用於尋找取代、驗證和擷取。下面的語法是 JavaScript、Python、PCRE 及大多數現代引擎共有的通用風格。搜尋任意符記即可跳轉。
更新 2026-07-06
字元類
| 符記 | 匹配 | 範例 |
|---|---|---|
| . | 除換行外的任意字元 | a.c → abc, a7c |
| \d | 任意數字(0–9) | \d\d → 42 |
| \D | 任意非數字 | \D → a, % |
| \w | 單字字元(字母、數字、底線) | \w+ → hello_1 |
| \W | 非單字字元 | \W → space, ! |
| \s | 空白(空格、定位字元、換行) | a\sb → a b |
| \S | 非空白 | \S+ → word |
| [abc] | a、b、c 中的任意一個 | [aeiou] → a vowel |
| [^abc] | 除 a、b、c 外的任意字元 | [^0-9] → non-digit |
| [a-z] | 範圍內的任意字元 | [a-f] → a…f |
錨點與邊界
| 符記 | 匹配 | 範例 |
|---|---|---|
| ^ | 字串開頭(多行模式下為行首) | ^Hi → line starting Hi |
| $ | 字串結尾(或行尾) | end$ → line ending end |
| \b | 單字邊界 | \bcat\b → the word cat |
| \B | 非單字邊界 | \Bcat → scatter |
量詞
| 符記 | 匹配 | 範例 |
|---|---|---|
| * | 前一項 0 次或多次 | a* → '', a, aaa |
| + | 1 次或多次 | a+ → a, aaa (not '') |
| ? | 0 次或 1 次(可選) | colou?r → color, colour |
| {n} | 恰好 n 次 | \d{4} → 2026 |
| {n,} | n 次或更多 | \d{2,} → 42, 4200 |
| {n,m} | n 到 m 次之間 | \d{2,4} → 42 to 4200 |
| *? | 惰性匹配:盡可能少 | <.+?> → shortest match |
分組、選擇與環視
| 符記 | 匹配 | 範例 |
|---|---|---|
| (abc) | 捕獲群組 | (ab)+ → abab |
| (?:abc) | 非捕獲群組 | (?:ab)+ → group, no capture |
| (?<name>…) | 命名捕獲群組 | (?<year>\d{4}) |
| a|b | 選擇 —— a 或 b | cat|dog → cat, dog |
| \1 | 對第 1 組的反向參照 | (\w)\1 → ll, oo |
| (?=abc) | 前瞻 —— 後面跟著 abc | \d(?=px) → 5 in 5px |
| (?!abc) | 否定前瞻 —— 後面不跟 | \d(?!px) |
| (?<=abc) | 後顧 —— 前面是 abc | (?<=\$)\d+ → 9 in $9 |
| (?<!abc) | 否定後顧 | (?<!\$)\d+ |
旗標
| 符記 | 匹配 | 範例 |
|---|---|---|
| g | 全域 —— 尋找所有匹配,而不只是第一個 | /a/g |
| i | 不分大小寫 | /abc/i → ABC |
| m | 多行 —— ^ 和 $ 匹配換行 | /^x/m |
| s | dotall —— . 也匹配換行 | /a.b/s |
| u | Unicode 模式 | /\u{1F600}/u |
關於跳脫的說明
要匹配具有特殊含義的字元 —— 如 . * + ? ( ) [ ] { } ^ $ | \ —— 在它前面加一個反斜線。例如,\. 匹配字面的點,\$ 匹配字面的錢字號。當模式沒有按預期匹配時,未跳脫的特殊字元通常就是原因。
相關工具