解决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 相关文章推荐
jQuery ajax serialize()方法的使用以及常见问题解决
Jan 27 Javascript
jQuery中andSelf()方法用法实例
Jan 08 Javascript
简单谈谈javascript代码复用模式
Jan 28 Javascript
javascript实现仿IE顶部的可关闭警告条
May 05 Javascript
不想让浏览器运行javascript脚本的方法
Nov 20 Javascript
jQuery如何使用自动触发事件trigger
Nov 29 Javascript
通过BootStrap实现轮播图的实际应用
Sep 26 Javascript
BootStrap实现带关闭按钮功能
Feb 15 Javascript
微信小程序中使用javascript 回调函数
May 11 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
May 04 Javascript
微信小程序点餐系统开发常见问题汇总
Aug 06 Javascript
分享几个JavaScript运算符的使用技巧
Apr 24 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
用PHP实现多级树型菜单
2006/10/09 PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
PHP获取php,mysql,apche的版本信息示例代码
2014/01/16 PHP
php实现文件下载实例分享
2014/06/02 PHP
详解使用php-cs-fixer格式化代码
2020/09/16 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
JQuery Dialog的内存泄露问题解决方法
2010/06/18 Javascript
js中for in的用法示例解析
2013/12/25 Javascript
JS的document.all函数使用示例
2013/12/30 Javascript
用原生JS获取CLASS对象(很简单实用)
2014/10/15 Javascript
在HTML代码中使用JavaScript代码的例子
2014/10/16 Javascript
Javascript this 关键字 详解
2014/10/22 Javascript
AngularJS入门教程(二):AngularJS模板
2014/12/06 Javascript
jQuery中:checked选择器用法实例
2015/01/04 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
p5.js入门教程之图片加载
2018/03/20 Javascript
详解Angularjs 自定义指令中的数据绑定
2018/07/19 Javascript
微信公众号生成新浪短网址的实现(快速生成)
2019/08/18 Javascript
npm 语义版本控制详解
2019/09/10 Javascript
layui表格数据复选框回显设置方法
2019/09/13 Javascript
nodejs中使用archive压缩文件的实现代码
2019/11/26 NodeJs
Python封装shell命令实例分析
2015/05/05 Python
python实现月食效果实例代码
2019/06/18 Python
Python递归调用实现数字累加的代码
2020/02/25 Python
Django调用支付宝接口代码实例详解
2020/04/04 Python
奇怪的鱼:Weird Fish
2018/03/18 全球购物
值传递还是引用传递
2015/02/08 面试题
英文版区域经理求职信
2013/10/23 职场文书
大三在校生电子商务求职信
2013/10/29 职场文书
试用期自我鉴定范文
2014/03/20 职场文书
篝火晚会策划方案
2014/05/16 职场文书
赔偿协议书范本
2014/09/12 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
离婚撤诉申请书范本
2015/05/18 职场文书
在职证明范本
2015/06/15 职场文书