1 回答

TA贡献1772条经验 获得超5个赞
先解释一个问题:
\1 等于 () 中匹配的内容。
问题1,不管w+部分是几位值,只要1的内容和w+部分是值相同就符合条件;我的推论想法对吗?
少了括号, 不论(\w+)中有几位。
问题2:根据上面的推论这里实际上取值成功且为aba;改变str2=“aabaacd”这样取值为aabaa,但为什么不是输出aabaa,aba呢?
str2 = "aabacd" 时, /(w+)b1/g 匹配 aba。
但是当 str2 = "aabaacd" 时, /(w+)b1/g 就只匹配 aabaa 了,不会再重复匹配 aba。 这是约定,没有为什么。
str2 = "aaabaaacd" 时,只匹配 aaabaaa。
问题3:/(w+)1/g和/(w)+1/g及/w1+/g的区别?
这三个例子不好解释,我们把 b 加上。我们来解释 /(\w+)b\1/g 和 /(\w)+b\1/g 的区别。
区别主要是 \1 的值,因为 \1 等于括号()中的值。最开始的地方写了。
"aabaac".replace(/(\w+)b\1/g, function(value1, value2) {
// value1="aabaa" 因为 \1 = "aa"
})
"aabaac".replace(/(\w)+b\1/g, function(value1, value2) {
// value1="aaba" 因为 \1 = "a"
})
至于 /w1/g 因为没有括号(),所以 1 没有值。
"aabaac".replace(/(\wb\1/g, function(value1, value2) {
// value1 没有值
})
添加回答
举报