解决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 常用操作代码
Mar 14 Javascript
jquery+json实现数据列表分页示例代码
Nov 15 Javascript
JavaScript学习笔记之基础语法
Jan 22 Javascript
jQuery获取DOM节点实例分析(2种方式)
Dec 15 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
Jun 12 Javascript
JS获取一个未知DIV高度的方法
Aug 09 Javascript
Bootstrap基本布局实现方法详解
Nov 25 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
Apr 13 Javascript
详解vue2.0脚手架的webpack 配置文件分析
May 27 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
Jan 25 Javascript
详解Node.js一行命令上传本地文件到服务器
Apr 22 Javascript
JS闭包原理及其使用场景解析
Dec 03 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 中的面向对象编程:通向大型 PHP 工程的办法
2006/12/03 PHP
轻松修复Discuz!数据库
2008/05/03 PHP
简单谈谈php延迟静态绑定
2016/01/26 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
在Laravel中使用DataTables插件的方法
2018/05/29 PHP
Add a Picture to a Microsoft Word Document
2007/06/15 Javascript
最佳JS代码编写的14条技巧
2011/01/09 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
jQuery中判断对象是否存在的方法汇总
2016/02/24 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
bootstrap输入框组代码分享
2016/06/07 Javascript
jQuery实现鼠标跟随效果
2017/02/20 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
vue.draggable实现表格拖拽排序效果
2018/12/01 Javascript
Vue数据绑定实例写法
2019/08/06 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
vue过滤器实现日期格式化的案例分析
2020/07/02 Javascript
Python格式化压缩后的JS文件的方法
2015/03/05 Python
python自定义类并使用的方法
2015/05/07 Python
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
Boda Skins皮衣官网:奢侈皮夹克,全球配送
2016/12/15 全球购物
计算机专业毕业生推荐信
2013/11/25 职场文书
班级活动策划书
2014/02/06 职场文书
网上卖盒饭创业计划书范文
2014/02/07 职场文书
酒店行政人事部经理职务说明书
2014/02/26 职场文书
优秀的应届生自荐信
2014/05/23 职场文书
2016年元旦寄语
2015/08/17 职场文书
大学班干部竞选稿
2015/11/20 职场文书
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript