正则表达式速查表
正则表达式(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 |
关于转义的说明
要匹配具有特殊含义的字符 —— 如 . * + ? ( ) [ ] { } ^ $ | \ —— 在它前面加一个反斜杠。例如,\. 匹配字面的点,\$ 匹配字面的美元符号。当模式没有按预期匹配时,未转义的特殊字符通常就是原因。
相关工具