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效率个人经验谈(8-15更新),加入range技巧
Jan 09 Javascript
获取当前网页document.url location.href区别总结
May 10 Javascript
jquery获取元素值的方法(常见的表单元素)
Nov 15 Javascript
使用AOP改善javascript代码
May 01 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
Aug 12 Javascript
Active控件问题小结(附解决办法)
Jun 09 Javascript
Bootstrap Multiselect 常用组件实现代码
Jul 09 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
Aug 18 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
Aug 22 Javascript
JS中利用FileReader实现上传图片前本地预览功能
Mar 02 Javascript
layui-table对返回的数据进行转变显示的实例
Sep 04 Javascript
使用typescript快速开发一个cli的实现示例
Dec 09 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
ThinkPHP Mobile使用方法简明教程
2014/06/18 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
让iframe自适应高度(支持XHTML,支持FF)
2007/07/24 Javascript
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
使用Json比用string返回数据更友好,也更面向对象一些
2011/09/13 Javascript
JavaScript中的this关键字介绍与使用实例
2013/06/21 Javascript
在myeclipse中如何加入jquery代码提示功能
2014/06/03 Javascript
用C/C++来实现 Node.js 的模块(一)
2014/09/24 Javascript
js的toUpperCase方法用法实例
2015/01/27 Javascript
javascript 闭包详解
2015/02/15 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
同步异步动态引入js文件的几种方法总结
2016/09/23 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
微信小程序实现的一键复制功能示例
2019/04/24 Javascript
vue中keep-alive组件的入门使用教程
2019/06/06 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
2019/09/18 Javascript
uniapp微信小程序实现一个页面多个倒计时
2020/11/01 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
Python 异常处理实例详解
2014/03/12 Python
利用python程序帮大家清理windows垃圾
2017/01/15 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2018/10/17 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
2019/02/08 Python
简单了解python 生成器 列表推导式 生成器表达式
2019/08/22 Python
英国名牌男装店:Standout
2021/02/17 全球购物
工程现场管理求职自荐信
2013/10/02 职场文书
现代化办公人员工作的自我评价
2013/10/16 职场文书
个人简历自我评价八例
2013/10/31 职场文书
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
2021/06/13 Python
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫
「Manga Time Kirara MAX」2022年5月号封面公开
2022/03/21 日漫