正则表达式字符类
字符类可以区分各种字符,例如区分字母和数字。
[xyz]
[a-c]
一个字符类。匹配包含在方括号中的任何字符。你可以使用连字符指定字符范围,但如果连字符出现在方括号中的第一个或最后一个字符,则将其视为字面连字符,作为普通字符包含在字符类中。
例如,[abcd]
与 [a-d]
相同。它们匹配"brisket"
中的"b"
和"chop"
中的"c"
。
例如,[abcd-]
和 [-abcd]
匹配"brisket"
中的"b"
、"chop"
中的"c"
和"non-profit"
中的"-"
(连字符)。
例如,[\w-]
与 [A-Za-z0-9_-]
相同。它们都匹配"brisket"
中的"b"
、"chop"
中的"c"
和"non-profit"
中的"n"
。
[^xyz]
[^a-c]
一个否定或补充的字符类。也就是说,它匹配未包含在方括号中的任何字符。你可以使用连字符指定字符范围,但如果连字符出现在^后的第一个字符或方括号中的或最后一个字符,则将其视为字面连字符,作为普通字符包含在字符类中。例如,[^abc]
与 [^a-c]
相同。它们首先匹配"bacon"
中的"o"
和"chop"
中的"h"
。
备注: ^
字符也可以表示输入的开始。
.
有下列含义之一: - 匹配除行终止符之外的任何单个字符:\n
, \r
, \u2028
或 \u2029
。例如,/.y/
在"yes make my day"
中匹配"my"
和"ay"
,而不是"yes"
。 - 在字符集内,点失去了它的特殊意义,并与文字点匹配。
\d
匹配任何数字 (阿拉伯数字)。相当于 [0-9]
。例如,/\d/
或 /[0-9]/
匹配"B2is the suite number"
中的"2"
。
\D
匹配任何非数字 (阿拉伯数字) 的字符。相当于[^0-9]
。例如,/\D/
或者 /[^0-9]/
匹配"B2 is the suite number"
中的"B is the suite number"
。
\w
匹配基本拉丁字母中的任何字母数字字符,包括下划线。相当于 [A-Za-z0-9_]
。例如,/\w/
匹配"apple"
中的"apple"
,匹配"$5.28"
中的"528"
,匹配"3D"
中的"3D"
,以及匹配"Émanuel"
中的"manuel"
。
\W
匹配任何不是来自基本拉丁字母的单词字符。相当于 [^A-Za-z0-9_]
。例如,/\W/
或者 /[^A-Za-z0-9_]/
匹配"50%"
中的"%"
,以及匹配"Émanuel"
中的"É"
。
\s
匹配单个空白字符,包括空格、制表符、换页符、换行符和其他 Unicode 空格。相当于 [\f\n\r\t\v\u0020\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]
。例如,/\s\w*/
匹配"foo bar"
中的"bar"
。
\S
匹配除空格以外的单个字符。相当于 [^\f\n\r\t\v\u0020\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]
。例如,/\S\w*/
匹配"foo bar"
中的"foo"
。
\t
匹配水平制表符。
\r
匹配回车符。
\n
匹配换行符。
\v
匹配垂直制表符。
\f
匹配换页符。
[\b]
匹配退格键。如果您正在寻找单词边界字符(,请参阅断言。
\0
匹配一个 NUL 字符。不要在此后面加上另一个数字。
\cX
使用插入符号匹配控制字符,其中”X”是 A–Z 中的一个字母(对应于代码点 U+0001–U+001F
)。例如,/\cM\cJ/
匹配"\r\n"
。
\xhh
匹配与代码 hh(两个十六进制数字)对应的字符。
\uhhhh
匹配与值 hhhh(四个十六进制数字)对应的 UTF-16 代码单元。
\u{hhhh}
\u{hhhhh}
(仅当设置了 u 标志时。)匹配与 Unicode 值 U+hhhh 或 U+hhhhh(十六进制数字)对应的字符。
\p{UnicodeProperty}
\P{UnicodeProperty}
根据字符的 Unicode 字符属性匹配字符(例如,仅匹配表情符号字符、日文片假名字符、中文汉字字符或日文汉字字符等)。
\
指示应特殊处理或”转义”后面的字符。它表现为两种方式之一。 - 对于通常按字面处理的字符,表示下一个字符是特殊的,不能按字面解释。例如,/b/
匹配字符"b"
。通过在"b"
前面放置反斜杠,即使用 /\b/
,字符变得特殊以表示匹配单词边界。 - 对于通常被特殊对待的字符,表示下一个字符不是特殊的,应该按字面意思解释。例如,"*"
是一个特殊字符,表示应该匹配前面的字符出现 0 次或多次;例如,/a*/
示匹配 0 个或多个"a"
。要从字面上匹配 * 需在其前面加上反斜杠;例如,/a\*/
匹配"a*"
。
备注:要从字面上匹配此字符,请将其转义。换句话说就是搜索
\
需要使用/\\/
。
x|y
析取:匹配”x”或”y”。每个由管道符 (|) 分隔的部分称为一个可选项。例如,/green|red/
匹配"green apple"
中的"green"
和"red apple"
中的"red"
。
备注: 析取是指定”一组选择”的另一种方式,但它不是字符类。析取不是原子的——你需要使用组使其成为一个更大的模式的一部分。[abc] 在功能上等同于 (?:a|b|c)。