说明
你搜索的某些模式将在字符串中多次出现。手动重复正则表达式是浪费时间的。有一个更好的方法可在你的字符串中有多个重复子串时进行指定。
你可以使用capture groups
捕获组搜索重复的子串。括号,(
and)
,用于查找重复的子串。你把会重复的模式的正则表达式放在括号之间。
要指定重复字符串的出现位置,你可以使用反斜杠(\
),然后使用数字。该数字从1开始,并随着你使用的每个附加捕获组而增加。一个例子是\1
来匹配第一个组。
下面的示例匹配所有出现两次并由空格分隔的单词:
var repeatStr = "regex regex";
var repeatRegex = /(\w+)\s\1/;
repeatRegex.test(repeatStr); // 返回 true
repeatStr.match(repeatRegex); // 返回 ["regex regex", "regex"]
在字符串上使用.match()
方法将返回一个带有匹配字符串的数组,以及其捕获组。
l练习
在reRexx
中使用capture groups
捕获组来匹配字符串中出现三次的数字,每个数字由空格分隔。
- 你的正则表达式应为数字使用快捷字符类。
- 你的正则表达式应该重复使用捕获组两次。
- 你的正则表达式应该有两个空格分隔三个数字。
- 你的正则表达式应该匹配
"42 42 42"
。 - 你的正则表达式应该匹配
"100 100 100"
。 - 你的正则表达式应该不匹配
"101 102 103"
。 - 你的正则表达式应该不匹配
"1 2 3"
。 - 你的正则表达式应该匹配
"10 10 10"
。
var reRegex = /change/; // Change this line
答案
方法 | 描述 |
正则表达式 | 正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。 |
元字符 | 描述 |
+ | 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。 |
\d | 匹配一个数字字符。等价于 [0-9]。 |
(pattern) | 匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0…$9 属性。要匹配圆括号字符,请使用 '\(' 或 '\)'。 |
\s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 |
var reRegex = /(\d+)\s\1\s\1/; // Change this line