JS正则表达式exec()方法和修饰符g的作用
为什么运行结果是这个?exec()方法会返回数组,g的作用是全局匹配,按照我的理解,结果应该是c为什么控制台打印的是b...
为什么运行结果是这个?
exec()方法会返回数组,g的作用是全局匹配,按照我的理解,结果应该是c为什么控制台打印的是b 展开
exec()方法会返回数组,g的作用是全局匹配,按照我的理解,结果应该是c为什么控制台打印的是b 展开
1个回答
展开全部
因为你这里相当于把正则表达式运行了三次,reg.test 虽然返回值是true,但它实际上的测试结果为a,然后reg.exec返回的是b,最后的reg.exec则返回c
你运行一下下面的代码就清楚了:
var str="abc";
var reg=/[a-z]/g;
console.log(reg.exec(str));
console.log(reg.exec(str));
console.log(reg.exec(str));
更多追问追答
追问
懂了,谢谢,另外一个问题:
var str = "abcdef";
var reg = /[a-c]/;
console.log(reg.test(str));
结果是true.这是为什么?我的理解是,abcdef这个字符串里面的字符已经超过了[a-c]的范围啊,结果应该是false.它匹配的时候应该是先从a开始匹配,然后再匹配b以此类推,如果这样的话结果应该是false.不知道为什么?
追答
我上面不是已经说了嘛,它这是依次测试str中的每个字符,str的第一个字符是a,在[a-c]的范围内,所以是true。你连续执行4次,第四次的字符是d,不在范围内,这时候就是false了:
console.log(reg.test(str)); //true
console.log(reg.test(str)); //true
console.log(reg.test(str)); //true
console.log(reg.test(str)); //false
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询