解决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 相关文章推荐
利用div+jquery自定义滚动条样式的2种方法
Jul 18 Javascript
jQuery toggleClass应用实例(附效果图)
Apr 06 Javascript
2014年最火的Node.JS后端框架推荐
Oct 27 Javascript
javascript实现简单的鼠标拖动效果实例
Apr 10 Javascript
JavaScript 面向对象与原型
Apr 10 Javascript
jQuery获取父元素及父节点的方法小结
Apr 14 Javascript
jquery实现左右无缝轮播图
Jul 31 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
Jan 19 Javascript
用move.js库实现百叶窗特效
Feb 08 Javascript
使用js获取伪元素的content实例
Oct 24 Javascript
Angular5集成eventbus的示例代码
Jul 19 Javascript
vue实现点击按钮切换背景颜色的示例代码
Jun 23 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加入ftp扩展的解决方法
2013/02/07 PHP
PHP使用CURL模拟登录的方法
2015/07/08 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
Flash+XML滚动新闻代码 无图片 附源码下载
2007/11/22 Javascript
javascript下判断一个对象是否具有指定名称的属性的的代码
2010/01/11 Javascript
Jquery 获取checkbox的checked问题
2011/11/16 Javascript
jquery图片放大功能简单实现
2013/08/01 Javascript
js如何调用qq互联api实现第三方登录
2014/03/28 Javascript
三种取消选中单选框radio的方法
2014/09/09 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
2016/06/24 Javascript
AngularJS下对数组的对比分析
2016/08/24 Javascript
微信小程序实现人脸识别
2018/05/25 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
[01:03:54]Liquid vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python实现梯度下降算法
2020/03/24 Python
Python实现FTP弱口令扫描器的方法示例
2019/01/31 Python
Python学习笔记之Break和Continue用法分析
2019/08/14 Python
python 普通克里金(Kriging)法的实现
2019/12/19 Python
python中xlutils库用法浅析
2020/12/29 Python
一款利用纯css3实现的超炫3D表单的实例教程
2014/12/01 HTML / CSS
突袭HTML5之Javascript API扩展2—地理信息服务及地理位置API学习
2013/01/31 HTML / CSS
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
美国最大的半成品净菜电商:Blue Apron(蓝围裙)
2018/04/27 全球购物
怎么处理XML的中文问题
2015/03/26 面试题
贸易跟单员英文求职信
2014/04/19 职场文书
绿色环保标语
2014/06/12 职场文书
学校献爱心活动总结
2014/07/08 职场文书
因个人工作失误检讨书
2019/06/21 职场文书
PHP命令行与定时任务
2021/04/01 PHP
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
详解Vue项目的打包方式(生成dist文件)
2022/01/18 Vue.js
Go语言 详解net的tcp服务
2022/04/14 Golang
基于redis+lua进行限流的方法
2022/07/23 Redis