解决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 通用简单的table选项卡实现
May 07 Javascript
javascript中使用css需要注意的地方小结
Sep 01 Javascript
js 本地预览的简单实现方法
Feb 18 Javascript
jquerymobile局部渲染的各种刷新方法小结
Mar 05 Javascript
jQuery.trim() 函数及trim()用法详解
Oct 26 Javascript
让图片跳跃起来  javascript图片轮播特效
Feb 16 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
Sep 06 Javascript
AngularJS表单验证中级篇(3)
Sep 28 Javascript
脚手架vue-cli工程webpack的作用和特点
Sep 29 Javascript
js 使用ajax设置和获取自定义header信息的方法小结
Mar 12 Javascript
js实现html滑动图片拼图验证
Jun 24 Javascript
浅谈vue中document.getElementById()拿到的是原值的问题
Jul 26 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图片缩放实现方法
2014/02/20 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
ThinkPHP打开验证码页面显示乱码的解决方法
2014/12/18 PHP
深入php内核之php in array
2015/11/10 PHP
php微信公众号开发之现金红包
2018/04/16 PHP
Js中sort()方法的用法
2006/11/04 Javascript
JQuery 选项卡效果(JS与HTML的分离)
2010/04/01 Javascript
javascript开发技术大全-第1章javascript概述
2011/07/03 Javascript
js获取对象为null的解决方法
2013/11/21 Javascript
优化javascript的执行效率一些方法总结
2013/12/25 Javascript
jQuery中removeProp()方法用法实例
2015/01/05 Javascript
jquery自适应布局的简单实例
2016/05/28 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
微信小程序图片横向左右滑动案例
2017/05/19 Javascript
JavaScript创建表格的方法
2020/04/13 Javascript
多种类型jQuery网页验证码插件代码实例
2021/01/09 jQuery
[50:59]2018DOTA2亚洲邀请赛 4.7 总决赛 LGD vs Mineski第四场
2018/04/10 DOTA
Using Django with GAE Python 后台抓取多个网站的页面全文
2016/02/17 Python
Python随机读取文件实现实例
2017/05/25 Python
Python编程把二叉树打印成多行代码
2018/01/04 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
2018/03/05 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
python实现宿舍管理系统
2019/11/22 Python
Python使用Matlab命令过程解析
2020/06/04 Python
python制作一个简单的gui 数据库查询界面
2020/11/19 Python
K近邻法(KNN)相关知识总结以及如何用python实现
2021/01/28 Python
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
西班牙高科技产品购物网站:MejorDeseo
2019/09/08 全球购物
公司同意接收函
2014/01/13 职场文书
感恩节活动方案
2014/01/27 职场文书
资助贫困学生倡议书
2014/05/16 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
社会实践心得体会范文
2016/01/14 职场文书
Python安装及建立虚拟环境的完整步骤
2022/06/25 Servers