解决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 相关文章推荐
asp javascript 实现关闭窗口时保存数据的办法
Nov 24 Javascript
JS中判断null、undefined与NaN的方法
Mar 26 Javascript
extjs每个组件要设置唯一的ID否则会出错
Jun 15 Javascript
Web制作验证码功能实例代码
Jun 19 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
Jan 15 Javascript
react-native android状态栏的实现
Jun 15 Javascript
解决layui 复选框等内置控件不显示的问题
Aug 14 Javascript
详解mpvue小程序中怎么引入iconfont字体图标
Oct 01 Javascript
Vue-cli3简单使用(图文步骤)
Apr 30 Javascript
vue+vant使用图片预览功能ImagePreview的问题解决
Apr 10 Javascript
javascript 易错知识点实例小结
Apr 25 Javascript
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
Dec 04 Vue.js
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
Windows下Apache + PHP SESSION丢失的解决过程全纪录
2015/04/07 PHP
开启PHP的伪静态模式
2015/12/31 PHP
JavaScipt基本教程之前言
2008/01/16 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
jquery日历插件e-calendar升级版
2016/11/10 Javascript
使用Vue.js创建一个时间跟踪的单页应用
2016/11/28 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
vue之数据交互实例代码
2017/06/20 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
2017/08/15 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
详解ECMAScript typeof用法
2018/07/25 Javascript
如何使用VuePress搭建一个类型element ui文档
2019/02/14 Javascript
用Python实现一个简单的线程池
2015/04/07 Python
pygame播放音乐的方法
2015/05/19 Python
详解Python网络爬虫功能的基本写法
2016/01/28 Python
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
Python 专题二 条件语句和循环语句的基础知识
2017/03/19 Python
用python做一个搜索引擎(Pylucene)的实例代码
2017/07/05 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
python启动应用程序和终止应用程序的方法
2019/06/28 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
python selenium循环登陆网站的实现
2019/11/04 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
20佳惊艳的HTML5应用程序示例分享
2011/05/03 HTML / CSS
Topshop美国官网:英国快速时尚品牌
2019/05/16 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
2012/02/06 面试题
养殖行业的创业计划书
2014/01/05 职场文书
小学班级口号
2014/06/09 职场文书
党小组意见范文
2015/06/08 职场文书
SQL Server数据库查询出现阻塞之性能调优
2022/04/10 SQL Server
MongoDB支持的索引类型
2022/04/11 MongoDB
instantclient客户端 连接oracle数据库
2022/04/26 Oracle