一些你所搜寻的匹配模式会在字符串中出现多次,手动重复该正则表达式太浪费了。
有一种更好的方法可以指定何时在字符串中会有多个重复的子字符串。
可以使用捕获组
搜寻重复的子字符串。
括号(
和)
可以用来匹配重复的子字符串。
只需要把重复匹配模式的正则表达式放在括号中即可。
要指定重复字符串将出现的位置,可以使用反斜杠(\
)后接一个数字。
这个数字从 1 开始,随着你使用的每个捕获组的增加而增加。
这里有一个示例,\1
可以匹配第一个组。
下面的示例匹配任意两个被空格分割的单词:
var repeatStr = "regex regex";
var repeatRegex = /(\w+)\s\1/;
console.log( repeatRegex.test(repeatStr) ); // 返回 true
console.log( repeatStr.match(repeatRegex) ); // 返回 ["regex regex", "regex"]
在字符串上使用.match()
方法将返回一个数组,其中包含它匹配的字符串及其捕获组。
闯关:在正则表达式reRegex
中使用捕获组
,以匹配在字符串中仅重复三次的数字,每一个都由空格分隔。
var repeatNum = "42 42 42";
var reRegex = /change/; // 修改这行
var result = reRegex.test(repeatNum);
console.log(result);
正确代码
var repeatNum = "42 42 42";
var reRegex = /^(\d+)\s\1\s\1$/;
var result = reRegex.test(repeatNum);
var result1 = repeatNum.match(reRegex);
console.log(result);
console.log(result1);