解决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 获取表单file全路径
Dec 31 Javascript
JS不间断向上滚动效果代码
Dec 25 Javascript
javascript获取元素偏移量的方法有哪些
Jun 24 Javascript
全面了解js中的script标签
Jul 04 Javascript
ASP.NET jquery ajax传递参数的实例
Nov 02 Javascript
微信小程序 input输入框详解及简单实例
Jan 10 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
Jun 12 jQuery
vue2+el-menu实现路由跳转及当前项的设置方法实例
Nov 07 Javascript
Vue 项目部署到服务器的问题解决方法
Dec 05 Javascript
clipboard.js在移动端复制失败的解决方法
Jun 13 Javascript
layui的table单击行勾选checkbox功能方法
Aug 14 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
Nov 13 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图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
2019/03/25 PHP
禁止F5等快捷键的JS代码
2007/03/06 Javascript
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
2013/10/25 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
js实现点击链接后窗口缩小并居中的方法
2015/03/02 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
jQuery实现的瀑布流加载效果示例
2016/09/13 Javascript
JQuery学习总结【二】
2016/12/01 Javascript
利用jQuery实现一个简单的表格上下翻页效果
2017/03/14 Javascript
Vue前后端不同端口的实现方法
2018/09/19 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
vue实现设置载入动画和初始化页面动画效果
2019/10/28 Javascript
javascript json对象小技巧之键名作为变量用法分析
2019/11/11 Javascript
如何构建 vue-ssr 项目的方法步骤
2020/08/04 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
Python实现栈的方法
2015/05/26 Python
Python闭包执行时值的传递方式实例分析
2018/06/04 Python
Django 多环境配置详解
2019/05/14 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
Python 字典一个键对应多个值的方法
2020/09/29 Python
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
HTML5 canvas 基本语法
2009/08/26 HTML / CSS
纽约州一群才华横溢的金匠制作而成:Hearth Jewelry
2019/03/22 全球购物
销售主管岗位职责
2014/02/08 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
少儿节目主持串词
2014/04/02 职场文书
优秀求职信
2014/05/29 职场文书
关于旅游的活动方案
2014/08/15 职场文书
工作失职检讨书
2015/01/26 职场文书
导游词之镇江西津古渡
2019/11/06 职场文书
Python Parser的用法
2021/05/12 Python
Python制作一个随机抽奖小工具的实现
2021/07/07 Python