摘要:在本教程中,您将学习正则表达式中的集合和范围。
集合
方括号搜索集合中的任何字符。例如,[aeiou]
匹配五个字符中的任何一个:'a'
、'e'
、'i'
、'o'
和 'u'
。[...]
称为集合。
例如,正则表达式 /[cbr]ats/g
匹配 cats
、bats
和 rats
let str = 'How cats, rats, and bats became Halloween animals';
let re = /[cbr]ats/g;
let results = str.match(re);
console.log(results);
Code language: JavaScript (javascript)
输出
["cats", "rats", "bats"]
Code language: JavaScript (javascript)
范围
方括号可以包含字符范围。例如,[a-z]
是从 a
到 z
的字符范围。而 [0-9]
是从 0 到 9 的数字。
[a-zA-Z0-9_]
等同于 \w
。[0-9]
等同于 \d
。
排除范围
要否定范围,可以使用排除范围,如:[^...]
。
例如,[^0-9]
匹配除数字之外的任何字符。它等同于 \D
。
或者,[^aeiou]
匹配除 'a'
、'e'
、'i'
、'o'
和 'u'
之外的任何字符。
转义特殊字符
通常,您使用反斜杠来转义特殊字符,例如 \.
。但是,在方括号中,您不需要转义大多数特殊字符,除非它们对方括号有意义。
例如,如果插入符 (^
) 位于字符串的开头,则需要转义它
[\^#$]
Code language: JavaScript (javascript)
如果插入符不在字符串的开头 (^
),则不需要转义它
[#^$]
Code language: JavaScript (javascript)
标志 u
如果集合包含代理对,则需要将标志 u
添加到正则表达式中才能使其正常工作
let result = 'It is 🍎'.match(/[🍎🍅🍓]/);
console.log(result);
Code language: JavaScript (javascript)
输出
["�"]
Code language: JavaScript (javascript)
在此示例中,[🍎🍅🍓] 有六个字符,而不是三个
let str = '🍎🍅🍓';
for(let i=0; i<str.length; i++) {
console.log(str.charCodeAt(i));
}
Code language: JavaScript (javascript)
输出
55356
57166
55356
57157
55356
57171
Code language: JavaScript (javascript)
如果添加标志 u
,则行为将正确
let result = 'It is 🍎'.match(/[🍎🍅🍓]/u);
console.log(result);
Code language: JavaScript (javascript)
输出
["🍎"]
Code language: JavaScript (javascript)
总结
- 使用
[...]
来构建一个集合,以匹配其中的任何字符。 - 使用集合内的
-
来构建一个范围,以匹配该范围内的任何字符。 - 使用
^
来否定范围。
本教程是否有帮助?