# 课程 A3:非捕获组
在课程 11:捕获组与课程 A1:反向引用中,我们已经学习到:一对括号内的任何子模式都将被捕获为一个组,每个组按照从左到右的左括号出现的顺序,编号从 1
开始递增。
但是某些情况下,我们并不需要使用捕获组的内容,这个时候可以使用非捕获组 (non-capturing groups)。非捕获组的语法是在捕获组的基础上,在左括号的右侧加上 ?:
,即 (?:exp)
。使用非捕获组可以节省内存、提升效率。
在下面这段 JavaScript 代码中,我们使用了非捕获组,反向引用 $1
/ $2
并没有与之对应的捕获组,在这里相当于纯字符串。
"123-456".replace(
/(?:\d+)-(?:\d+)/, // searchValue
"$2-$1" // replaceValue, $1、$2 等价于反向引用 \1、\2
)
// Output => "$2-$1"
请完成下面的练习,要求使用条件语法匹配前两行的动物,但不能生成捕获组。
练习 A3:非捕获组
Task | Text | Capture Groups | Result |
match | I love cats | cats | |
match | I love dogs | dogs | |
skip | I love logs | ||
skip | I love cogs |
解决上述任务以继续下一个问题,或者查看答案。