返回
首页

Regex cheatsheet

字符

PatternDescription
x字符x
\\反斜线字符
\t制表符\u0009
\n新行(换行)符\u000A
\r回车符\u000D
\f换页符\u000C
\a报警 (bell) 符\u0007
\e转义符\u001B

字符类

PatternDescription
[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](减去)

预定义字符类

PatternDescription
.任何字符(可能不匹配行结束符)
\d数字:[0-9]
\D非数字:[^0-9]
\s空白字符:[ \t\n\x0B\f\r]
\S非空白字符:[^\s]
\w单词字符:[a-zA-Z_0-9]
\W非单词字符:[^\w]

边界匹配器

PatternDescription
^行的开头
$行的结尾
\b单词边界
\B非单词边界
\A输入的开头
\G上一个匹配的结尾
\Z输入的结尾,仅用于最后的结束符(如果有)
\z输入的结尾

Greedy 数量词

匹配优先,优先匹配最大长度,匹配尽可能多的内容

PatternDescription
X?X,一次或一次也没有
X*X,零次或多次
X+X,一次或多次
X{n}X,恰好 n 次
X{n,}X,至少 n 次
X{n,m}X,至少 n 次,但是不超过 m 次

Reluctant 数量词

忽略优先,尽可能匹配最少内容,满足下限即成功

PatternDescription
X??X,一次或一次也没有
X*?X,零次或多次
X+?X,一次或多次
X{n}?X,恰好 n 次
X{n,}?X,至少 n 次
X{n,m}?X,至少 n 次,但是不超过 m 次

Possessive 数量词

占有优先,优先匹配最大长度,放弃备用状态

PatternDescription
X?+X,一次或一次也没有
X*+X,零次或多次
X++X,一次或多次
X{n}+X,恰好 n 次
X{n,}+X,至少 n 次
X{n,m}+X,至少 n 次,但是不超过 m 次

Logical 运算符

PatternDescription
XYX 后跟 Y
X|YX 或 Y
(X)X,作为捕获组

特殊构造(非捕获)

PatternDescription
(?:X)X,作为非捕获组
(?>X)X,固化分组,匹配后放弃备用状态

环视结构(非捕获)

环视结构,包括肯定型和否定型,顺序环视和逆序环视,它们只是简单的测试,其中表达式能否在当前的位置匹配后面的内容(顺序),或者前面的内容(逆序),并不改变当前位置。

PatternDescription
(?=X)肯定型,先向前(右)匹配与X相符内容
(?!X)否定型,先向前(右)匹配与X不相符内容
(?<=X)肯定型,先向后(左)匹配与X相符内容
(?<!X)否定型,先向后(左)匹配与X不相符内容

常见需求

案例

// TODO

NeedsPattern
手机号:1XXXXXXXXXX1\d{10}
日期:2020-09-03\d{4}-\d{2}-\d{2}
日期:2020年09月03日\d{4}年\d{2}月\d{2}日