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


Posted in Javascript onOctober 10, 2018

代码是这样的:

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()返回的值却不同的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用TextRange获取输入框中光标的位置的代码
Mar 08 Javascript
JS关键字球状旋转效果的实例代码
Nov 29 Javascript
改变隐藏的input中value值的方法
Mar 19 Javascript
使用mouse事件实现简单的鼠标经过特效
Jan 30 Javascript
Jquery中Event对象属性小结
Feb 27 Javascript
DropDownList控件绑定数据源的三种方法
Dec 24 Javascript
jQuery选择器_动力节点Java学院整理
Jul 05 jQuery
解决vue-cli3 使用子目录部署问题
Jul 19 Javascript
微信小程序云开发之云函数详解
May 16 Javascript
解决vue elementUI中table里数字、字母、中文混合排序问题
Jan 07 Javascript
js实现简单放大镜效果
Mar 07 Javascript
微信小程序实现聊天室
Aug 21 Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
Oct 10 #jQuery
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
Oct 09 #Javascript
从零开始封装自己的自定义Vue组件
Oct 09 #Javascript
vue axios 简单封装以及思考
Oct 09 #Javascript
angularJS实现不同视图同步刷新详解
Oct 09 #Javascript
对angular 实时更新模板视图的方法$apply详解
Oct 09 #Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
Oct 09 #Javascript
You might like
欧美媒体选出10年前最流行的17部动画
2017/01/18 日漫
php截取中文字符串不乱码的方法
2013/12/25 PHP
详解php反序列化
2020/06/10 PHP
javascript管中窥豹 形参与实参浅析
2011/12/17 Javascript
JS交换变量的方法
2015/01/21 Javascript
jQuery调取jSon数据并展示的方法
2015/01/29 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
2015/07/29 Javascript
JavaScript判断对象是否为数组
2015/12/22 Javascript
Map.vue基于百度地图组件重构笔记分享
2017/04/17 Javascript
微信小程序商城项目之淘宝分类入口(2)
2017/04/17 Javascript
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
2018/10/10 Javascript
详解三种方式解决vue中v-html元素中标签样式
2018/11/22 Javascript
详解JS浏览器事件循环机制
2019/03/27 Javascript
JS回调函数深入理解
2019/10/16 Javascript
如何在postman测试用例中实现断言过程解析
2020/07/09 Javascript
零基础写python爬虫之urllib2使用指南
2014/11/05 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
python 公共方法汇总解析
2019/09/16 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
10种CSS3实现的loading动画,挑一个走吧?
2020/11/16 HTML / CSS
html5 postMessage解决跨域、跨窗口消息传递方案
2016/12/20 HTML / CSS
关于Assembly命名空间的三个面试题
2015/07/23 面试题
金融专业个人的自我评价
2013/10/18 职场文书
高中物理教学反思
2014/02/08 职场文书
市场营销方案范文
2014/03/11 职场文书
应届生自荐信
2014/06/30 职场文书
我的梦想演讲稿1000字
2014/08/21 职场文书
关于运动会广播稿50字
2014/10/18 职场文书
结婚幸福感言
2015/08/01 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
《观潮》教学反思
2016/02/17 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书
pytorch MSELoss计算平均的实现方法
2021/05/12 Python
简述Java中throw-throws异常抛出
2021/08/07 Java/Android
python 管理系统实现mysql交互的示例代码
2021/12/06 Python