美文网首页
关于js中的正则全局匹配

关于js中的正则全局匹配

作者: 做我想做与写我想写 | 来源:发表于2019-01-25 17:51 被阅读0次

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

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

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

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

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

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

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

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

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

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

相关文章

  • 关于js中的正则全局匹配

    今天开发测试的时候碰见这么一个奇怪的问题,定义一个正则表达式,如下图 然后使用这个正则去判断不同的字符串,就会出现...

  • 正则表达式

    js正则表达式总结 正则表达式的字符匹配量词横向模糊匹配var regex = /ab{2,5}/gg 表示全局匹...

  • 【JS】正则 /g 注意事项

    js中正则表达式的全局匹配模式 /g用法详细 瞎扯 使用正则表达式来做表单验证的时候,遇到如下一个鬼东西, 匹配正...

  • 2018-09-15

    正则表达式的区别 JS中语法: /匹配对象的模式/

  • [Emacs] 自动切换语言模式

    打开js文件时,自动切换到js2-mode 其中“\\.js\\'”是正则表达式用来匹配js文件,“\\.”匹配“...

  • RegExp类型

    JavaScript高级程序中对正则的介绍很浅,正则匹配可以很强大 标志 g:全局搜索 i:忽略大小写 m:多行搜...

  • 正则表达式中字符串模式匹配方法exec和match的区别

    正则表达式中字符串模式匹配方法exec和match的区别 js正则表达式中字符串模式匹配方法exec()和matc...

  • 正则匹配搜索文案

    需求描述:搜索匹配列表数据 实现方案:用正则全局替换

  • 小程序的富文本中图片宽度自适应

    JS部分正则匹配图片 HTML部分 效果图片

  • Js正则表达式

    一、Js正则表达式概述 正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象...

网友评论

      本文标题:关于js中的正则全局匹配

      本文链接:https://www.haomeiwen.com/subject/odlvjqtx.html