JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案


Posted in Javascript onJuly 27, 2016

一个简单的利用正则判断输入是否为数字:

input1 = '0281234567';input2 = '0282345678';var reg = /^\d+$/g;
reg.test(input1); //true
reg.test(input2); //false

发现第二次test的时候返回的值不对了.排除书写错误,取值失败等等各种干扰因素后,发现仅仅是reg正则第二次执行的时候就无法正确执行了.之前并未遇到过这个问题,便搜索了一下相关信息.

原来这个问题实际上是/g导致的,而此时也才发现,实际上这个正则我误用了一个/g.因为/g代表全局匹配,所以判断正则时内部是有一个lastIndex来记录最后匹配的位置.当重复调用的时候,会接着上次的lastIndex继续匹配,故而将导致判断出错.明白了原理解决起来也就很明了了:

1.去掉/g,在不需要/g的情况下不要随意添加/g标识

2.第二次匹配前,手动将lastIndex置0,以上面的例子来说:reg.lastIndex()=0即可.

以上所述是小编给大家介绍的JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
用js实现trim()的解决办法
Apr 16 Javascript
javascript 数字格式化输出的实现代码
Dec 10 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
Dec 12 Javascript
深入浅析AngularJS中的module(模块)
Jan 04 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
Oct 05 Javascript
getElementById().innerHTML与getElementById().value的区别
Oct 27 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
Mar 23 jQuery
Node.js中环境变量process.env的一些事详解
Oct 26 Javascript
微信小程序通过保存图片分享到朋友圈功能
May 24 Javascript
基于javascript canvas实现五子棋游戏
Jul 08 Javascript
基于JavaScript实现猜数字游戏代码实例
Jul 30 Javascript
JS实现拖动模糊框特效
Aug 25 Javascript
AngularJS入门教程之Scope(作用域)
Jul 27 #Javascript
AngularJS入门之动画
Jul 27 #Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
Jul 27 #Javascript
获取JS中网页各种高宽与位置的方法总结
Jul 27 #Javascript
AngularJS 模型详细介绍及实例代码
Jul 27 #Javascript
jQuery使用serialize()表单序列化时出现中文乱码问题的解决办法
Jul 27 #Javascript
详解Angular开发中的登陆与身份验证
Jul 27 #Javascript
You might like
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
javascript利用apply和arguments复用方法
2013/11/25 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
jQuery的cookie插件实现保存用户登陆信息
2014/04/15 Javascript
JavaScript设计模式之策略模式实例
2014/10/10 Javascript
Javascript快速排序算法详解
2014/12/03 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
jquery实现移动端点击图片查看大图特效
2020/09/11 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
canvas学习之API整理笔记(二)
2016/12/29 Javascript
html5 canvas 详细使用教程
2017/01/20 Javascript
Vue.js常用指令之循环使用v-for指令教程
2017/06/27 Javascript
[49:15]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第二场 1月19日
2021/03/11 DOTA
Python常见数据类型转换操作示例
2019/05/08 Python
解决Django一个表单对应多个按钮的问题
2019/07/18 Python
解决c++调用python中文乱码问题
2020/07/29 Python
python如何实现DES加密
2020/09/21 Python
Python之字典对象的几种创建方法
2020/09/30 Python
Django url 路由匹配过程详解
2021/01/22 Python
Python基于爬虫实现全网搜索并下载音乐
2021/02/14 Python
html5播放视频且动态截图实现步骤与代码(支持safari其他未测试)
2013/01/06 HTML / CSS
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
Ibatis如何调用存储过程
2015/05/15 面试题
员工培训邀请函
2014/02/02 职场文书
银行贷款承诺书
2014/03/29 职场文书
护士长2014年终工作总结
2014/11/11 职场文书
先进事迹材料范文
2014/12/29 职场文书
幼儿园小班个人工作总结
2015/02/12 职场文书
计算机教师工作总结
2015/08/13 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
《孙子兵法》:欲成大事者,需读懂这些致胜策略
2019/08/23 职场文书
Python基础知识之变量的详解
2021/04/14 Python
Python实现灰色关联分析与结果可视化的详细代码
2022/03/25 Python