JS正则表达式exec()方法和修饰符g的作用

为什么运行结果是这个?exec()方法会返回数组,g的作用是全局匹配,按照我的理解,结果应该是c为什么控制台打印的是b... 为什么运行结果是这个?
exec()方法会返回数组,g的作用是全局匹配,按照我的理解,结果应该是c为什么控制台打印的是b
展开
 我来答
网海1书生
科技发烧友

2019-04-22 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26230

向TA提问 私信TA
展开全部

因为你这里相当于把正则表达式运行了三次,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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式