字符类
字符类用于区分不同类型的字符,例如区分字母和数字。
| 字符 | 含义 |
|---|---|
[xyz]
|
字符类: 匹配方括号中包含的任何一个字符。您可以使用连字符指定字符范围,但如果连字符出现在方括号内作为第一个或最后一个字符,则它将被视为一个字面连字符,并作为普通字符包含在字符类中。 例如, 例如, 例如, |
|
|
反向字符类: 匹配方括号中未包含的任何字符。您可以使用连字符指定字符范围,但如果连字符出现在 注意: ^ 字符也可以表示输入的开头。 |
. |
通配符: 匹配任何单个字符,除了行终止符: |
\d |
数字字符类转义: 匹配任何数字(阿拉伯数字)。等同于 |
\D |
非数字字符类转义: 匹配任何非数字(阿拉伯数字)字符。等同于 |
\w |
单词字符类转义: 匹配基本拉丁字母中的任何字母数字字符,包括下划线。等同于 |
\W |
非单词字符类转义: 匹配基本拉丁字母中非单词字符的任何字符。等同于 |
\s |
空白字符类转义: 匹配单个空白字符,包括空格、制表符、换页符、换行符和其他 Unicode 空格。等同于 |
\S |
非空白字符类转义: 匹配单个非空白字符。等同于 |
\t |
匹配水平制表符。 |
\r |
匹配回车符。 |
\n |
匹配换行符。 |
\v |
匹配垂直制表符。 |
\f |
匹配换页符。 |
[\b] |
匹配退格符。如果您要查找单词边界断言 (\b),请参阅断言。 |
\0 |
匹配 NUL 字符。其后不能跟其他数字。 |
\cX
|
使用脱字号表示法匹配控制字符,其中 "X" 是 A-Z 的字母(对应于代码点 |
\xhh
|
匹配代码为 hh(两个十六进制数字)的字符。 |
\uhhhh
|
匹配值为 hhhh(四个十六进制数字)的 UTF-16 代码单元。 |
\u{hhhh} 或 \u{hhhhh}
|
(仅当设置了 u 标志时)匹配 Unicode 值为 U+hhhh 或 U+hhhhh(十六进制数字)的字符。 |
\p{UnicodeProperty}, \P{UnicodeProperty} |
Unicode 字符类转义: 根据其 Unicode 字符属性匹配字符(例如,表情符号字符、日文片假名字符或中文/日文汉字等)。 |
\ |
表示应特殊对待或“转义”后续字符。它有两种行为方式。
注意: 要字面匹配此字符,请用自身转义它。换句话说,要搜索 |
x|y
|
逻辑或: 匹配 "x" 或 "y"。每个由竖线 (
注意: 逻辑或是一种指定“一组选择”的另一种方式,但它不是一个字符类。逻辑或不是原子——您需要使用一个分组来使其成为更大模式的一部分。 |
断言
断言包括边界(指示行和单词的开头和结尾)以及以某种方式指示匹配可能性的其他模式(包括先行断言、后行断言和条件表达式)。
边界类型断言
| 字符 | 含义 |
|---|---|
^ |
输入边界起始断言: 匹配输入的开头。如果启用了 注意: 当此字符出现在字符类的开头时,它具有不同的含义。 |
$ |
输入边界结束断言: 匹配输入的结尾。如果启用了 |
\b |
单词边界断言: 匹配一个单词边界。这是单词字符不紧接或不紧跟另一个单词字符的位置,例如在字母和空格之间。请注意,匹配的单词边界不包含在匹配结果中。换句话说,匹配的单词边界的长度为零。 示例
要匹配退格符 ( |
\B |
非单词边界断言: 匹配非单词边界。这是前一个字符和后一个字符类型相同的位置:两者都必须是单词字符,或者两者都必须是非单词字符,例如在两个字母之间或两个空格之间。字符串的开头和结尾被视为非单词。与匹配的单词边界一样,匹配的非单词边界也不包含在匹配结果中。例如, |
其他断言
注意: ? 字符也可以用作量词。
| 字符 | 含义 |
|---|---|
x(?=y) |
先行断言: 仅当 "x" 后面跟着 "y" 时才匹配 "x"。例如, |
x(?!y) |
负向先行断言: 仅当 "x" 后面没有跟着 "y" 时才匹配 "x"。例如, |
(?<=y)x |
后行断言: 仅当 "x" 前面是 "y" 时才匹配 "x"。例如, |
(?<!y)x |
负向后行断言: 仅当 "x" 前面不是 "y" 时才匹配 "x"。例如, |
分组和反向引用
分组和反向引用表示表达式字符组。
| 字符 | 含义 |
|---|---|
(x) |
捕获组: 匹配 一个正则表达式可以有多个捕获组。在结果中,捕获组的匹配项通常在一个数组中,其成员的顺序与捕获组中左括号的顺序相同。这通常就是捕获组本身的顺序。当捕获组嵌套时,这一点变得很重要。通过结果元素的索引 ( 捕获组会带来性能损失。如果您不需要回调匹配的子字符串,请优先使用非捕获括号(见下文)。
如果设置了 |
(?<Name>x) |
命名捕获组: 匹配 "x" 并将其存储在返回匹配项的 groups 属性中,名称由 例如,要从电话号码中提取美国区号,我们可以使用 |
(?:x) |
非捕获组: 匹配 "x" 但不记住匹配项。匹配的子字符串无法从结果数组的元素 ( |
(?flags:x), (?:flags-flags:x) |
修饰符: 仅对封闭模式启用或禁用指定标志。修饰符中只能使用 |
\n
|
反向引用: 其中 "n" 是一个正整数。匹配正则表达式中第 n 个捕获组(从左括号开始计数)匹配的相同子字符串。例如, |
\k<Name> |
命名反向引用: 对由 例如,
注意: |
量词
量词表示要匹配的字符或表达式的数量。
| 字符 | 含义 |
|---|---|
x*
|
匹配前面的项 "x" 0 次或更多次。例如, |
x+
|
匹配前面的项 "x" 1 次或更多次。等同于 |
x?
|
匹配前面的项 "x" 0 次或 1 次。例如, 如果紧跟在 |
x{n}
|
其中 "n" 是一个非负整数,精确匹配前面的项 "x" 出现 "n" 次。例如, |
x{n,}
|
其中 "n" 是一个非负整数,匹配前面的项 "x" 至少出现 "n" 次。例如, |
x{n,m}
|
其中 "n" 和 "m" 是非负整数,且 |
|
|
默认情况下,像
|