在正则表达式中看见这样的栗子:
<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";
,那么就能匹配 cc
和bb