各位大神路过的进来看一看,关于正则中\1的问题

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

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

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

 var pattern =  /(\w)(\w)\2/g;
undefined
var ans = str.match(pattern);
undefined
console.log(ans)
VM3182:1 ["bcc"]

上面的代码就输出了bcc
第一个括号匹配b
第二个括号匹配c
第三个\2要与第二个括号匹配的c相同
所以就 `bcc1 了

应该是向后看一位吧,当前位与后一位的值相同

正则表达式中的小括号"()"。是代表分组的意思。 如果再其后面出现\1则是代表与第一个小括号中要匹配的内容相同。

这不是匹配挨着两个字符相同的正则吗

 var pattern =  /(\w)\1/g;

其中 (\w)\1表明了要匹配两个字符,求第二个字符要和(\w)匹配的相等,说白了就是匹配连续相等的字符(如上的 cc)

我测试了一下,不加\1,就是把所有的字符分组,如下
图片说明

加上\1就是找到连续相等的
图片说明

如果var str = "abcccbba";,那么就能匹配 ccbb
图片说明