开发者社区> 问答> 正文

关于JS正则表达式中全局匹配的疑问

var reg = /^((\d{4})+[-]+(\d{2})+[-]+(\d{2}))$/g;
var date1 = "2012-03-27";
var date2 = "2012-03-27";
console.log(reg.test(date1));
console.log(reg.test(date2));

执行上面的js代码,你会看到控制台里面打印 true 和 false!

现在检测出是因为 reg 正则表达式定义里面最后一个(全局匹配参数) g 影响的!

那么我有个疑问,为什么这个参数会影响检测结果呢?

展开
收起
a123456678 2016-07-15 11:48:42 2166 0
1 条回答
写回答
取消 提交回答
  • RegExp有个lastIndex, 加了g之匹配成功不重置,匹配失败才重置, 所以导致这行第一次成功,第二次失败,如此往复

    2019-07-17 19:56:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载