摘要:在本教程中,您将学习正则表达式中的集合和范围。
集合
方括号搜索集合中的任何字符。例如,[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
57171Code language: JavaScript (javascript)如果添加标志 u,则行为将正确
let result = 'It is 🍎'.match(/[🍎🍅🍓]/u);
console.log(result);Code language: JavaScript (javascript)输出
["🍎"]Code language: JavaScript (javascript)总结
- 使用
[...]来构建一个集合,以匹配其中的任何字符。 - 使用集合内的
-来构建一个范围,以匹配该范围内的任何字符。 - 使用
^来否定范围。
本教程是否有帮助?