解决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 相关文章推荐
讨论javascript(一)工厂方式 js面象对象的定义方法
Dec 15 Javascript
JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具
Dec 10 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
Dec 12 Javascript
Event altKey,ctrlKey,shiftKey属性解析
Dec 18 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
Jan 09 Javascript
js动态删除div元素基本思路及实现代码
May 08 Javascript
JS判断变量是否为空判断是否null
Jul 25 Javascript
jQuery实现在列表的首行添加数据
May 19 Javascript
3个可以改善用户体验的AngularJS指令介绍
Jun 18 Javascript
简单的jQuery banner图片轮播实例代码
Mar 04 Javascript
jsonp跨域请求实现示例
Mar 13 Javascript
通过jquery的ajax请求本地的json文件方法
Aug 08 jQuery
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
用PHP连接Oracle数据库
2006/10/09 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
PHP静态文件生成类实例
2014/11/29 PHP
php+jQuery递归调用POST循环请求示例
2016/10/14 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
按钮接受回车事件的三种实现方法
2014/06/06 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
jQuery网页选项卡插件rTabs用法实例分析
2015/08/26 Javascript
javascript获取网页各种高宽及位置的方法总结
2016/07/27 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
进一步探究Python的装饰器的运用
2015/05/05 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
Python操作rabbitMQ的示例代码
2019/03/19 Python
Python DES加密实现原理及实例解析
2020/07/17 Python
Eastbay官网:美国最大的运动鞋网络零售商
2016/07/27 全球购物
德国EGOIST网店:销售畅销的设计师品牌
2017/04/18 全球购物
德国宠物用品、宠物食品及水族馆网上商店:ZooRoyal
2017/07/09 全球购物
The Outnet亚太地区:折扣设计师时装店
2019/12/05 全球购物
Linux内核产生并发的原因
2012/07/13 面试题
蛋糕店的商业计划书范文
2014/01/27 职场文书
《狮子和兔子》教学反思
2014/03/02 职场文书
《棉鞋里的阳光》教学反思
2014/04/24 职场文书
迎新春趣味活动方案
2014/08/24 职场文书
建筑专业毕业生求职信
2014/09/30 职场文书
工厂标语大全
2014/10/06 职场文书
借名购房协议书范本
2014/10/06 职场文书
小学生手册家长意见
2015/06/03 职场文书
2015毕业设计工作总结
2015/07/24 职场文书
2015年小学重阳节活动总结
2015/07/29 职场文书
2016年清明节寄语
2015/12/04 职场文书
JS的深浅复制详细
2021/10/16 Javascript
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js
html中两种获取标签内的值的方法
2022/06/16 jQuery