Regex cheatsheet
字符
Pattern | Description |
---|---|
x | 字符x |
\\ | 反斜线字符 |
\t | 制表符\u0009 |
\n | 新行(换行)符\u000A |
\r | 回车符\u000D |
\f | 换页符\u000C |
\a | 报警 (bell) 符\u0007 |
\e | 转义符\u001B |
字符类
Pattern | Description |
---|---|
[abc] | a、b 或 c(简单类) |
[^abc] | 任何字符,除了 a、b 或 c(否定) |
[a-zA-Z] | a 到 z 或 A 到 Z(范围) |
[a-d[m-p]] | 等于[a-dm-p](并集) |
[a-z&&[def]] | d、e 或 f(交集) |
[a-z&&[^bc]] | 等于[ad-z](减去) |
[a-z&&[^m-p]] | 等于[a-lq-z](减去) |
预定义字符类
Pattern | Description |
---|---|
. | 任何字符(可能不匹配行结束符) |
\d | 数字:[0-9] |
\D | 非数字:[^0-9] |
\s | 空白字符:[ \t\n\x0B\f\r] |
\S | 非空白字符:[^\s] |
\w | 单词字符:[a-zA-Z_0-9] |
\W | 非单词字符:[^\w] |
边界匹配器
Pattern | Description |
---|---|
^ | 行的开头 |
$ | 行的结尾 |
\b | 单词边界 |
\B | 非单词边界 |
\A | 输入的开头 |
\G | 上一个匹配的结尾 |
\Z | 输入的结尾,仅用于最后的结束符(如果有) |
\z | 输入的结尾 |
Greedy 数量词
匹配优先,优先匹配最大长度,匹配尽可能多的内容
Pattern | Description |
---|---|
X? | X,一次或一次也没有 |
X* | X,零次或多次 |
X+ | X,一次或多次 |
X{n} | X,恰好 n 次 |
X{n,} | X,至少 n 次 |
X{n,m} | X,至少 n 次,但是不超过 m 次 |
Reluctant 数量词
忽略优先,尽可能匹配最少内容,满足下限即成功
Pattern | Description |
---|---|
X?? | X,一次或一次也没有 |
X*? | X,零次或多次 |
X+? | X,一次或多次 |
X{n}? | X,恰好 n 次 |
X{n,}? | X,至少 n 次 |
X{n,m}? | X,至少 n 次,但是不超过 m 次 |
Possessive 数量词
占有优先,优先匹配最大长度,放弃备用状态
Pattern | Description |
---|---|
X?+ | X,一次或一次也没有 |
X*+ | X,零次或多次 |
X++ | X,一次或多次 |
X{n}+ | X,恰好 n 次 |
X{n,}+ | X,至少 n 次 |
X{n,m}+ | X,至少 n 次,但是不超过 m 次 |
Logical 运算符
Pattern | Description |
---|---|
XY | X 后跟 Y |
X|Y | X 或 Y |
(X) | X,作为捕获组 |
特殊构造(非捕获)
Pattern | Description |
---|---|
(?:X) | X,作为非捕获组 |
(?>X) | X,固化分组,匹配后放弃备用状态 |
环视结构(非捕获)
环视结构,包括肯定型和否定型,顺序环视和逆序环视,它们只是简单的测试,其中表达式能否在当前的位置匹配后面的内容(顺序),或者前面的内容(逆序),并不改变当前位置。
Pattern | Description |
---|---|
(?=X) | 肯定型,先向前(右)匹配与X相符内容 |
(?!X) | 否定型,先向前(右)匹配与X不相符内容 |
(?<=X) | 肯定型,先向后(左)匹配与X相符内容 |
(?<!X) | 否定型,先向后(左)匹配与X不相符内容 |
常见需求
案例
// TODO
Needs | Pattern |
---|---|
手机号:1XXXXXXXXXX | 1\d{10} |
日期:2020-09-03 | \d{4}-\d{2}-\d{2} |
日期:2020年09月03日 | \d{4}年\d{2}月\d{2}日 |