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 相关文章推荐
让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
May 25 Javascript
js解决弹窗问题实现班级跳转DIV示例
Jan 06 Javascript
JavaScript随机生成信用卡卡号的方法
Apr 07 Javascript
Node.js模块封装及使用方法
Mar 06 Javascript
微信小程序 wx.uploadFile无法上传解决办法
Dec 14 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
Mar 04 Javascript
Vue2.x中的父组件传递数据至子组件的方法
May 01 Javascript
微信小程序tabBar底部导航中文注解api详解
Aug 16 Javascript
使用jQuery实现简单的tab框实例
Aug 22 jQuery
js 原生判断内容区域是否滚动到底部的实例代码
Nov 15 Javascript
微信小程序的mpvue框架快速上手指南
May 15 Javascript
Echarts实现多条折线可拖拽效果
Dec 19 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运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
2016/03/21 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
Django中的cookie与session操作实例代码
2017/08/17 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
js不是基础的基础
2006/12/24 Javascript
一个符号插入器 中用到的js代码
2007/09/04 Javascript
javascript getElementsByClassName函数
2010/04/01 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
2013/09/05 Javascript
为Javascript中的String对象添加去除左右空格的方法(示例代码)
2013/11/30 Javascript
js AppendChild与insertBefore用法详细对比
2013/12/16 Javascript
jquery实现图片上传前本地预览功能
2016/05/10 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
2017/10/27 jQuery
js正则相关知识点专题
2018/05/10 Javascript
js实现坦克大战游戏
2020/02/24 Javascript
JS跨浏览器解析XML应用过程详解
2020/10/16 Javascript
Nuxt的动态路由和参数校验操作
2020/11/09 Javascript
[03:23:49]2016.12.17日完美“圣”典全回顾
2016/12/19 DOTA
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
[40:05]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python with statement 进行文件操作指南
2014/08/22 Python
Python简单实现TCP包发送十六进制数据的方法
2016/04/16 Python
Python使用三种方法实现PCA算法
2017/12/12 Python
django 修改server端口号的方法
2018/05/14 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
Python魔法方法详解
2019/02/13 Python
Python字典的概念及常见应用实例详解
2019/10/30 Python
python中rb含义理解
2020/06/18 Python
ReVive利维肤美国官网:RéVive Skincare
2018/04/18 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
优秀体育委员自荐书
2014/01/31 职场文书
大学生国家助学金感谢信
2015/01/23 职场文书
学校运动会简讯
2015/07/20 职场文书
python百行代码实现汉服圈图片爬取
2021/11/23 Python
MySQL七大JOIN的具体使用
2022/02/28 MySQL