关于js中的正则全局匹配

今天开发测试的时候碰见这么一个奇怪的问题,定义一个正则表达式,如下图


然后使用这个正则去判断不同的字符串,就会出现这种情况


可以看到图中打印出来的值,第一个则是判断之后的值,而第二个是被判断的字符串,重点是第三个值:全局匹配之后的最后索引值+1,

那么回头再来看看全局匹配的定义:

                                    执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。

咋一看没啥问题,是全局匹配不同字符串或者相同字符串的,找到之后就停止了。

但是再看看上面的第三个数值,也就是同一个匹配规则匹配字符串之后的lastIndex,这个索引并不会随着不同的字符串而置0重新匹配,而是会记录下来,

那么再来理解上面的定义就简单多了,同一个匹配规则在全局匹配下会一直匹配下去,直到匹配不到也就是为false时才会重置,上面那种情况因为我们设置了^与$适配符,所以从索引7的位置开始匹配就肯定会错,这是由于使用了限定适配符引起的,那么去掉这俩货又会怎样么,



事实证明了猜想,前俩个为true,而第三个为false的原因是后面的字符串从13的索引开始则是空的,所以匹配不了。

那么怎么避免这种问题呢,个人推荐的是手动将需要多次匹配的匹配规则的lastIndex手动置0,又或者不使用全局匹配,具体得看需求咯。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 验证正则表达式中的全局g对几种方法的影响 test校验方法:正则的方法总结:1)不添加全局g时,lastIn...
    果木山阅读 363评论 0 0
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,694评论 0 3
  • 前言 对于正则,著称火星文字,见名知意主要它晦涩难懂,一直以来,看到它总是怕怕的,在平时,也只是简单的用用,其主要...
    itclanCoder阅读 872评论 0 2
  • 初衷:看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印...
    DCbryant阅读 4,196评论 0 20
  • 1 Object 对象 教程:https://wangdoc.com/javascript/stdlib/obje...
    智勇双全的小六阅读 2,467评论 0 0

友情链接更多精彩内容