解决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 相关文章推荐
js的表单操作 简单计算器
Dec 29 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
Jan 24 Javascript
jQuery筛选器children()案例详解(图文)
Feb 17 Javascript
在页面加载完成后通过jquery给多个span赋值
May 21 Javascript
javascript制作坦克大战全纪录(1)
Nov 27 Javascript
Javascript函数式编程简单介绍
Oct 11 Javascript
js实现下拉框效果(select)
Mar 28 Javascript
解读vue生成的文件目录结构及说明
Nov 27 Javascript
JavaScript代码实现txt文件的上传预览功能
Mar 27 Javascript
JS实现简单的点赞与踩功能示例
Dec 05 Javascript
Javascript实现秒表计时游戏
May 27 Javascript
解决Antd Table组件表头不对齐的问题
Oct 27 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
php内核解析:PHP中的哈希表
2014/01/30 PHP
php防止伪造数据从地址栏URL提交的方法
2014/08/24 PHP
PHP长网址与短网址的实现方法
2017/10/13 PHP
php把字符串指定字符分割成数组的方法
2018/03/12 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
JavaScript写的一个自定义弹出式对话框代码
2010/01/17 Javascript
JQuery 插件模板 制作jquery插件的朋友可以参考下
2010/03/17 Javascript
在图片上显示左右箭头类似翻页的代码
2013/03/04 Javascript
js改变文章字体大小的实例代码
2013/11/27 Javascript
关于Iframe父页面与子页面之间的相互调用
2016/11/22 Javascript
headjs实现网站并行加载但顺序执行JS
2016/11/29 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
详解Windows下安装Nodejs步骤
2017/05/18 NodeJs
Angular2入门教程之模块和组件详解
2017/05/28 Javascript
原生js封装运动框架的示例讲解
2017/10/01 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
vue非父子组件通信问题及解决方法
2018/06/11 Javascript
Vue程序调试的方法
2019/06/17 Javascript
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
利用python求相邻数的方法示例
2017/08/18 Python
Python利用Scrapy框架爬取豆瓣电影示例
2020/01/17 Python
python计算导数并绘图的实例
2020/02/29 Python
Python操作Jira库常用方法解析
2020/04/10 Python
Python正则表达式高级使用方法汇总
2020/06/18 Python
python搜索算法原理及实例讲解
2020/11/18 Python
详解HTML5 canvas绘图基本使用方法
2018/01/29 HTML / CSS
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
美发店5.1活动方案
2014/01/24 职场文书
社区维稳工作方案
2014/06/06 职场文书
北京申奥口号
2014/06/19 职场文书
落实八项规定专题民主生活会对照检查材料
2014/09/15 职场文书
2015驻村干部工作总结
2015/04/07 职场文书
2015年营业员工作总结
2015/04/23 职场文书