解决js相同的正则多次调用test()返回的值却不同的问题

 更新时间:2018年10月10日 08:59:02   作者:专注前端30年  
今天小编就为大家分享一篇解决js相同的正则多次调用test()返回的值却不同的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

代码是这样的:

var reg = /^1[345678][0-9]{9}$/g;
console.log(reg.test(15328044636));
console.log(reg.test(15328044636));

会发现控制台打印的数据却是:

true
false

问题原因

这是因为正则reg的g属性,设置的全局匹配。RegExp有一个lastIndex属性,来保存索引开始位置。

上面的问题,第一次调用的lastIndex值为0,到了第二次调用,值变成了11。

var reg = /^1[345678][0-9]{9}$/g;
console.log(reg.lastIndex, reg.test(15328044636));
console.log(reg.lastIndex, reg.test(15328044636));

//打印的值
0 true
11 false

解决方案

第一种方案是将g去掉,关闭全局匹配。

第二种就是在每次匹配之前将lastIndex的值设置为0。

var reg = /^1[345678][0-9]{9}$/g;
console.log(reg.lastIndex, reg.test(15328044636));
reg.lastIndex = 0;
console.log(reg.lastIndex, reg.test(15328044636));

//打印的值
0 true
0 true

以上这篇解决js相同的正则多次调用test()返回的值却不同的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 用js小类库获取浏览器的高度和宽度信息

    用js小类库获取浏览器的高度和宽度信息

    在做项目时碰到了要在页面上显示一个浮动DIV层的效果。本来做的是在页面居中时显示的,但后来经过自己的测试发现,当网页中出现了滚动条之后,那个浮动的DIV却还是在页面的顶部显示的
    2012-01-01
  • next.js getServerSideProps源码解析

    next.js getServerSideProps源码解析

    这篇文章主要为大家介绍了next.js getServerSideProps源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • 微信小程序实现搜索关键词高亮的示例代码

    微信小程序实现搜索关键词高亮的示例代码

    这篇文章主要介绍了微信小程序实现搜索关键词高亮的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • JavaScript编写开发动态时钟

    JavaScript编写开发动态时钟

    这篇文章主要为大家详细介绍了JavaScript编写开发动态时钟,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • javascript实现检验的各种规则

    javascript实现检验的各种规则

    这篇文章主要介绍了javascript实现检验的各种规则,涉及javascript针对手机号、邮箱、网址、汉字及图片等相关检测技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 学习JavaScript设计模式(继承)

    学习JavaScript设计模式(继承)

    这篇文章主要带领大家学习JavaScript设计模式,其中重点介绍继承,举例说明为什么需要继承,对继承进行详细剖析,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • 微信小程序自定义音乐进度条的实例代码

    微信小程序自定义音乐进度条的实例代码

    最近遇到这样的需求:显示音乐播放按钮、可手动拖拽进度条;页面中含多个音乐,播放当前音乐时暂停其他音乐播放。 这篇文章主要介绍了微信小程序自定义音乐进度条的实例代码,需要的朋友可以参考下
    2018-08-08
  • js导航栏单击事件背景变换示例代码

    js导航栏单击事件背景变换示例代码

    本篇文章主要是对js导航栏单击事件背景变换的示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • js实现鼠标移入图片放大效果

    js实现鼠标移入图片放大效果

    这篇文章主要为大家详细介绍了js实现鼠标移入图片放大效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • 详解CocosCreator优化之DrawCall

    详解CocosCreator优化之DrawCall

    这篇文章主要介绍了CocosCreator中DrawCall的优化,想研究游戏性能的同学,一定要看一看
    2021-04-04

最新评论