正则表达式速查表
快速查找常用的正则表达式模式
A 字符类
| 字符 | 含义 | 示例 |
|---|---|---|
. |
任意字符(除换行符) | a.c 匹配 "abc", "a1c" |
\d |
数字 [0-9] | \\d 加量词匹配3位数字如"123" |
\D |
非数字 [^0-9] | \D+ 匹配 "abc" |
\w |
单词字符 [a-zA-Z0-9_] | \w+ 匹配 "hello123" |
\W |
非单词字符 | \W+ 匹配 "!@#" |
\s |
空白字符 | \s+ 匹配 " " |
\S |
非空白字符 | \S+ 匹配 "abc" |
[abc] |
字符集(a 或 b 或 c) | [abc] 匹配 "a", "b", "c" |
[^abc]
|
反向字符集(非 abc) | [^abc] 匹配 "d", "e", "f" |
[a-z] |
范围(小写字母) | [a-z]+ 匹配 "hello" |
B 锚点(位置匹配)
| 字符 | 含义 | 示例 |
|---|---|---|
^ |
字符串开头 | ^hello 匹配开头的 "hello" |
$ |
字符串结尾 | world$ 匹配结尾的 "world" |
\b |
单词边界 | \btest\b 匹配单词 "test" |
\B |
非单词边界 | \Btest\B 匹配 "atestb" 中的 "test" |
C 量词
| 量词 | 含义 | 示例 |
|---|---|---|
* |
0 次或多次 | \d* 匹配 "", "1", "123" |
+ |
1 次或多次 | \d+ 匹配 "1", "123" |
? |
0 次或 1 次 | \d? 匹配 "", "1" |
n |
恰好 n 次 | 数字加括号n表示精确匹配n次,如\\d3匹配3位数字 |
n, |
至少 n 次 | 数字加括号n,表示至少n次,如\\d2,匹配2位或更多数字 |
n,m |
n 到 m 次 | 数字加括号n,m表示n到m次,如\\d2,4匹配2到4位数字 |
💡 贪婪 vs 惰性
默认情况下,量词是贪婪的(尽可能匹配更多)。添加 ? 使其变为惰性(尽可能匹配更少)。
- •
*?、+?、??、n,m?是惰性版本 - •
.*贪婪匹配到尽可能多 - •
.*?惰性匹配到尽可能少
D 分组与引用
| 语法 | 含义 | 示例 |
|---|---|---|
(abc) |
捕获分组 | 括号捕获匹配内容供后续使用 |
(?:abc)
|
非捕获分组 | 括号仅用于分组,不捕获内容 |
\1 |
反向引用第1个分组 | (\w)\1 匹配 "aa", "bb" |
| |
或运算 | a|b 匹配 "a" 或 "b" |
E 先行断言
| 语法 | 含义 | 示例 |
|---|---|---|
(?=abc)
|
正向先行(后面是 abc) | \d(?=px) 匹配 "1px" 中的 "1" |
(?!abc)
|
负向先行(后面不是 abc) | \d(?!px) 匹配 "1ab" 中的 "1" |
(pos-lookbehind-abc)
|
正向后行(前面是 abc) | (pos-lookbehind-$)\d+ 匹配 "$100" 中的 "100" |
(neg-lookbehind-abc) |
负向后行(前面不是 abc) | (neg-lookbehind-$)\d+ 不匹配 "$100" |
F 常用示例
邮箱地址
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]2,
匹配大多数常见邮箱格式
中国手机号
1[3-9]\\d9
匹配以 1 开头,第二位 3-9 的 11 位号码
日期 (YYYY-MM-DD)
\\d4-\\d2-\\d2
匹配标准日期格式
HTTP(S) URL
https?://[\\w.-]+(?:\\.[a-z]2,)?
匹配 http/https 开头的网址
IPv4 地址
(\\d1,3\\.)3\\d1,3
匹配标准 IPv4 格式(未验证范围)
身份证号
[1-9]\\d5(18|19|20)\\d2(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d3[\\dXx]
匹配 18 位身份证号码