字符类
字符类区分字符类型,例如,区分字母和数字。
试试看
类型
字符 | 含义 |
---|---|
[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 字符属性匹配字符:例如,表情符号字符,或日语平假名字符,或中日韩汉/ kanji 字符,等等。 |
\ |
表示以下字符应被特殊对待或“转义”。它有两种行为之一。
注意: 要按字面意义匹配此字符,请用它本身对其进行转义。换句话说,要搜索 |
x|y |
析取: 匹配 "x" 或 "y"。每个由管道 ( 注意: 析取是指定“一组选择”的另一种方式,但它不是字符类。析取不是原子——您需要使用 组 来使其成为更大模式的一部分。 |
示例
查找一系列数字
查找以 A 开头的单词(来自拉丁字母)
在本例中,我们匹配以字母 A 开头的单词。\b
表示一个 单词边界(即,不要在单词中间开始匹配)。[aA]
表示字母 "a" 或 "A"。\w+
表示任何来自拉丁字母的字符,多次(+
是一个 量词)。请注意,因为我们已经匹配到没有更多单词字符为止,所以没有必要在结尾添加 \b
边界。
const aliceExcerpt =
"I'm sure I'm not Ada,' she said, 'for her hair goes in such long ringlets, and mine doesn't go in ringlets at all.";
const regexpWordStartingWithA = /\b[aA]\w+/g;
console.table(aliceExcerpt.match(regexpWordStartingWithA));
// ['Ada', 'and', 'at', 'all']
在 字符类转义 参考中查看更多示例。
查找单词(来自 Unicode 字符)
我们可以使用 Unicode 字符范围来识别单词,而不是使用拉丁字母(因此可以处理俄语或阿拉伯语等其他语言的文本)。Unicode 的 "基本多语言平面" 包含了全世界使用的大多数字符,我们可以使用字符类和范围来匹配用这些字符书写的单词。
const nonEnglishText = "Приключения Алисы в Стране чудес";
const regexpBMPWord = /([\u0000-\u0019\u0021-\uFFFF])+/gu;
// BMP goes through U+0000 to U+FFFF but space is U+0020
console.table(nonEnglishText.match(regexpBMPWord));
["Приключения", "Алисы", "в", "Стране", "чудес"];
在 Unicode 字符类转义 参考中查看更多示例。
统计元音
在本例中,我们统计文本中元音(A、E、I、O、U、Y)的数量。g
标志用于匹配文本中模式的所有出现。i
标志用于使模式不区分大小写,因此它匹配大写和小写元音。
const aliceExcerpt =
"There was a long silence after this, and Alice could only hear whispers now and then.";
const regexpVowels = /[aeiouy]/gi;
console.log("Number of vowels:", aliceExcerpt.match(regexpVowels).length);
// Number of vowels: 26