解决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 获取select下拉列表值的代码
Sep 07 Javascript
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
Dec 03 Javascript
六款帮助你实现惊艳视差滚动效果的jQuery插件
Sep 14 Javascript
ie下$.getJSON出现问题的解决方法
Feb 12 Javascript
浅谈javascript 函数表达式和函数声明的区别
Jan 05 Javascript
jQuery原理系列-css选择器的简单实现
Jun 07 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
Sep 21 Javascript
面试常见的js算法题
Mar 23 Javascript
JS变量及其作用域
Mar 29 Javascript
vue form 表单提交后刷新页面的方法
Sep 04 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
Jul 21 Javascript
JQuery绑定事件四种实现方法解析
Dec 02 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写杨辉三角实例代码
2011/07/17 PHP
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
json的定义、标准格式及json字符串检验
2014/05/11 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
jQuery中dom元素上绑定的事件详解
2015/04/24 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
2015/07/27 Javascript
js实现将选中值累加到文本框的方法
2015/08/12 Javascript
jquery SweetAlert插件实现响应式提示框
2015/08/18 Javascript
js学习阶段总结(必看篇)
2016/06/16 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
JS跳转手机站url的若干注意事项
2017/10/18 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
JSONP解决JS跨域问题的实现
2020/05/25 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
[01:28:44]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第一场 1月10日
2021/03/11 DOTA
python snownlp情感分析简易demo(分享)
2017/06/04 Python
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
餐厅执行经理岗位职责范本
2014/02/26 职场文书
yy婚礼司仪主持词
2014/03/14 职场文书
个性婚礼策划方案
2014/05/17 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
交通事故委托书范本(2篇)
2014/09/21 职场文书
2014年公务员退休工资改革方案
2014/10/01 职场文书
民主生活会汇报材料
2014/12/15 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
考试后的感想
2015/08/07 职场文书
离职员工给领导和同事的感谢信
2015/11/03 职场文书
MySQL的join buffer原理
2021/04/29 MySQL
python opencv通过按键采集图片源码
2021/05/20 Python
如何在CSS中绘制曲线图形及展示动画
2021/05/24 HTML / CSS
SQL实战演练之网上商城数据库商品类别数据操作
2021/10/24 MySQL