字符类
字符类可以区分各种字符,例如区分字母和数字。
尝试一下
类型
字符 | 含义 |
---|---|
[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 字符属性匹配字符(例如,仅匹配表情符号字符、日文片假名字符、中文汉字字符或日文汉字字符等)。 |
\ |
指示应特殊处理或“转义”后面的字符。它表现为两种方式之一。
备注:要从字面上匹配此字符,请将其转义。换句话说就是搜索 |
x|y
|
析取:匹配“x”或“y”。每个由管道符 (
备注: 析取是指定“一组选择”的另一种方式,但它不是字符类。析取不是原子的——你需要使用组使其成为一个更大的模式的一部分。 |
示例
寻找一系列数字
const randomData = "015 354 8787 687351 3512 8735";
const regexpFourDigits = /\b\d{4}\b/g;
// \b 表示边界(即不要在单词中间开始匹配)
// \d{4} 表示一个数字,四次
// \b 表示另一个边界(即不要在单词中间结束匹配)
console.table(randomData.match(regexpFourDigits));
// ['8787', '3512', '8735']
寻找以 A 开头的拉丁字母单词
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;
// \b 表示边界(即不要在单词中间开始匹配)
// [aA] 表示字母 a 或 A
// \w+ 表示任何*拉丁字母*字符,多次
console.table(aliceExcerpt.match(regexpWordStartingWithA));
// ['Ada', 'and', 'at', 'all']
寻找一个 Unicode 字符的单词
代替拉丁字母,我们可以使用一系列 Unicode 字符来识别一个单词(从而能够处理其他语言的文本,如中文、俄语或阿拉伯语)。Unicode 的“基本多文种平面(Basic Multilingual Plane)”包含世界各地使用的大部分字符,我们可以使用字符类和范围来匹配用这些字符编写的单词。
const nonEnglishText = "爱丽丝 梦游 仙境";
const regexpBMPWord = /([\u0000-\u0019\u0021-\uFFFF])+/gu;
// 基本多文种平面范围是 U+0000 到 U+FFFF 但空格是 U+0020
console.table(nonEnglishText.match(regexpBMPWord));
["爱丽丝", "梦游", "仙境"];
计算元音个数
const aliceExcerpt =
"There was a long silence after this, and Alice could only hear whispers now and then.";
const regexpVowels = /[AEIOUYaeiouy]/g;
console.log("元音数:", aliceExcerpt.match(regexpVowels).length);
// 元音数:26