为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式/(\w+)\1/g的意思

正则表达式/(\w+)\1/g的意思

一只斗牛犬 2019-05-24 09:49:41
varstr1="13255aasfefewgggggead"varstr2="aabacd"varre=/(\w+)\1/gvarre2=/(\w+)b\1/gconsole.log(re.test(str2));str1.replace(re,function($1,$2){alert($1)//输出55,aa,fefe,gggg由此看出(\w+)\1--不管w+部分是几位值,只要\1的内容和w+部分是值相同就符合条件.问题1,我的推论想法对吗?})str2.replace(re,function($1,$2){alert($1)//输出aa,符合上面推论})str2.replace(re2,function($1,$2){alert($1)//输出aba;问题2:根据上面的推论这里实际上取值成功且为aba;改变str2=“aabaacd”这样取值为aabaa,但为什么不是输出aabaa,aba呢?})//.问题1,不管w+部分是几位值,只要1的内容和w+部分是值相同就符合条件;我的推论想法对吗?//问题2:根据上面的推论这里实际上取值成功且为aba;改变str2=“aabaacd”这样取值为aabaa,但为什么不是输出aabaa,aba呢?//问题3:/(w+)\1/g和/(w)+\1/g及/w\1+/g的区别?
查看完整描述

2 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

先解释一个问题:\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没有值
})
                            
查看完整回答
反对 回复 2019-05-24
  • 2 回答
  • 0 关注
  • 3894 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号