解决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 相关文章推荐
自适应图片大小的弹出窗口
Jul 27 Javascript
Gird组件 Part-3:范例RSSFeed Viewer
Mar 10 Javascript
js 提交和设置表单的值
Dec 19 Javascript
De facto standard 世界上不可思议的事实标准
Aug 29 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
Oct 11 Javascript
jquery获取css的color值返回RGB的方法
Dec 18 Javascript
基于jquery实现即时检查格式是否正确的表单
May 06 Javascript
简单理解vue中el、template、replace元素
Oct 27 Javascript
JavaScript实现反转字符串的方法详解
Apr 27 Javascript
vue判断input输入内容全是空格的方法
Mar 02 Javascript
javascript实现异形滚动轮播
Nov 28 Javascript
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
Apr 28 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
星际争霸兵种名称对照表
2020/03/04 星际争霸
php加密解密函数authcode的用法详细解析
2013/10/28 PHP
PHP实现网站访问量计数器
2017/10/27 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
2019/10/08 PHP
浅析JS刷新框架中的其他页面 && JS刷新窗口方法汇总
2013/07/08 Javascript
JavaScript自定义事件介绍
2013/08/29 Javascript
转换字符串为json对象的方法详解
2013/11/29 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
2013/12/17 Javascript
原创jQuery弹出层插件分享
2015/04/02 Javascript
AngularJS基础学习笔记之控制器
2015/05/10 Javascript
js实现简单秒表走动的时钟特效
2020/03/25 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
vue-devtools的安装步骤
2018/04/23 Javascript
Vue.js实现的计算器功能完整示例
2018/07/11 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
SSM+layUI 根据登录信息显示不同的页面方法
2019/09/20 Javascript
小程序双头slider选择器的实现示例
2020/03/31 Javascript
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
2013/12/06 Python
Python多线程实例教程
2014/09/06 Python
使用Python求解最大公约数的实现方法
2015/08/20 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
Python Selenium 之数据驱动测试的实现
2019/08/01 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
Django在Model保存前记录日志实例
2020/05/14 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
BRASTY捷克:购买香水、化妆品、手袋和手表
2017/07/12 全球购物
be2台湾单身男女交友:全球网路婚姻介绍的领导品牌
2019/10/11 全球购物
台湾专柜女包:KINAZ
2019/12/26 全球购物
装修五一活动策划案
2014/01/23 职场文书
模具设计与制造专业推荐信
2014/02/16 职场文书
初中班主任评语
2014/04/24 职场文书
叶问观后感
2015/06/15 职场文书