function test17()
{
var r1=/(.)\1/g;
var str1="baaaabbc";
var arr;
while ((arr = r1.exec(str1)) != null)
{
window.alert(arr.index + "-" + arr.lastIndex + "\t" + arr);
}
}
function test18()
{
var r1=/(.)\2/g;
var str1="baaabbbc";
var arr;
while ((arr = r1.exec(str1)) != null)
{
window.alert(arr.index + "-" + arr.lastIndex + "\t" + arr);
}
}
为何test17能够得到正确结果,而test18不行
------解决方案--------------------
/(.)\1/g
中 \1 表示第一对圆括号中匹配的内容
/(.)\2/g
中 \2 表示第二对圆括号中匹配的内容,但是你并没有第二对圆括号
------解决方案--------------------
\1是对获取的子匹配的引用。其中1表示第1个子匹配
/(.)\2/;中只有一个子匹配,你却要引用第2个子匹配,当然不对了