解决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在指定位置增加节点函数insertBefore()用法实例
Jan 12 Javascript
JavaScript获得url查询参数的方法
Jul 02 Javascript
JavaScript实现select添加option
Jul 03 Javascript
使用jQuery的toggle()方法对HTML标签进行显示、隐藏的方法(示例)
Sep 01 Javascript
纯JavaScript手写图片轮播代码
Oct 20 Javascript
js实现界面向原生界面发消息并跳转功能
Nov 22 Javascript
Express + Session 实现登录验证功能
Sep 08 Javascript
使用javascript做在线算法编程
May 25 Javascript
vue调试工具vue-devtools安装及使用方法
Nov 07 Javascript
JavaScript动态创建二维数组的方法示例
Feb 01 Javascript
微信小程序实现页面分享onShareAppMessage
Aug 12 Javascript
vue3自定义dialog、modal组件的方法
Jan 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
MySql数据库查询结果用表格输出PHP代码示例
2015/03/20 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
常见JS效果之图片减速度滚动实现代码
2011/12/08 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
js取模(求余数)隔行变色
2014/05/15 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
js实现可键盘控制的简单抽奖程序
2016/07/13 Javascript
面试常见的js算法题
2017/03/23 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
jQuery实现table表格信息的展开和缩小功能示例
2018/07/21 jQuery
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
使用imba.io框架得到比 vue 快50倍的性能基准
2019/06/17 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
JS面向对象编程实现的Tab选项卡案例详解
2020/03/03 Javascript
原生JS实现音乐播放器的示例代码
2021/02/25 Javascript
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
python实现猜数字小游戏
2020/03/24 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
Django中使用Whoosh进行全文检索的方法
2019/03/31 Python
java中的控制结构(if,循环)详解
2019/06/26 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
英国信箱在线鲜花速递公司:Bloom & Wild
2019/03/10 全球购物
新东方旗下远程教育网站:新东方在线
2020/03/19 全球购物
怎样让char类型的东西转换成int类型
2013/12/09 面试题
技校学生个人职业生涯规划范文
2014/03/03 职场文书
推广活动策划方案
2014/08/23 职场文书
小学生放飞梦想演讲稿
2014/08/26 职场文书
房产公证书
2015/01/23 职场文书
2016年心理学教育培训学习心得体会
2016/01/12 职场文书
MySQL中distinct和count(*)的使用方法比较
2021/05/26 MySQL
Spark SQL 2.4.8 操作 Dataframe的两种方式
2021/10/16 SQL Server
动画「半妖的夜叉姬」新BD特典图公开
2022/03/22 日漫
Win10 最新稳定版本 21H2开始推送
2022/04/19 数码科技
Python如何将list中的string转换为int
2022/07/15 Ruby