正则表达式字符类

来自泡泡学习笔记
跳到导航 跳到搜索

字符类可以区分各种字符,例如区分字母和数字。

[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)。