首页新闻找找看学习计划

各位大神路过的进来看看,正则表达式的问题

0
悬赏园豆:20 [已解决问题] 解决于 2017-11-01 17:13

在正则表达式中看见这样的栗子:

<script>
    var str = "abcccba";
    var pattern =  /(\w)\1/g;
    var ans = str.match(pattern);
    alert(ans);
</script>

输出的结果是cc,请问一下大家,这里的\1表示啥意思啊?为什么我改成\2后输出就是null,请大家指点一二。小弟在这里谢过大家了。

HDWK的主页 HDWK | 菜鸟二级 | 园豆:206
提问于:2017-11-01 16:15
< >
分享
最佳答案
0
正则表达式中的小括号"()"。是代表分组的意思。 如果再其后面出现\1则是代表与第一个小括号中要匹配的内容相同。
 注意:\1必须与小括号配合使用
收获园豆:20
[3] | 小虾三级 |园豆:1172 | 2017-11-01 16:18

你好,请具体分析一下这个案例,第一个小括号匹配不应该是a吗?

HDWK | 园豆:206 (菜鸟二级) | 2017-11-01 16:23

@HDWK: 如果没有\1,它会["a", "b", "c", "c", "c", "b", "a"]这样切割,然后加了\1,它会在找一个和(\w)重复的值,比如你找到了c,然后下一个值继续是c

[3] | 园豆:1172 (小虾三级) | 2017-11-01 16:40

@[3]: 为什么我把\1改成\2就是null呢?

HDWK | 园豆:206 (菜鸟二级) | 2017-11-01 16:42

@HDWK: \1表示重复第一个圆括号,\2表示重复第二个圆括号然而你没有,依次类推,类似替换组$1,$2,自己百度一下这两个的用法吧

[3] | 园豆:1172 (小虾三级) | 2017-11-01 16:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册