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 相关文章推荐
javascript跨域刷新实现代码
Jan 01 Javascript
一个简单的JS鼠标悬停特效具体方法
Jun 17 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
Aug 15 Javascript
通过伪协议解决父页面与iframe页面通信的问题
Apr 05 Javascript
jquery结婚电子请柬特效源码分享
Aug 21 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
Aug 24 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
Jan 23 Javascript
jQuery实现返回顶部功能
Feb 23 Javascript
JavaScript对Json的增删改属性详解
Jun 02 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
Aug 29 Javascript
详解React-Todos入门例子
Nov 08 Javascript
vue中promise的使用及异步请求数据的方法
Nov 08 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版(5)
2006/10/09 PHP
建立动态的WML站点(一)
2006/10/09 PHP
怎样在PHP中通过ADO调用Asscess数据库和COM程序
2006/10/09 PHP
php5编程中的异常处理详细方法介绍
2008/07/29 PHP
深入PHP购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
如何使用PHP批量去除文件UTF8 BOM信息
2013/08/05 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
2016/12/15 PHP
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
2012/09/14 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
hovertree插件实现二级树形菜单(简单实用)
2016/12/28 Javascript
javascript 判断当前浏览器版本并判断ie版本
2017/02/17 Javascript
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
监控微信小程序中的慢HTTP请求过程详解
2019/07/05 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
js将日期格式转换为YYYY-MM-DD HH:MM:SS
2020/09/18 Javascript
[46:59]完美世界DOTA2联赛PWL S2 GXR vs Ink 第二场 11.19
2020/11/20 DOTA
Python 连连看连接算法
2008/11/22 Python
python二叉树遍历的实现方法
2013/11/21 Python
Python+OpenCV实现图像融合的原理及代码
2018/12/03 Python
分享Python切分字符串的一个不错方法
2018/12/14 Python
python中的colorlog库使用详解
2019/07/05 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
2019/08/09 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
2020/03/30 Python
英国日常交易网站:Wowcher
2018/09/04 全球购物
将"引用"作为函数返回值类型的格式、好处和需要遵守的规则
2016/02/09 面试题
怎么写好自荐信
2013/10/30 职场文书
二手书店创业计划书
2014/01/16 职场文书
中层干部培训方案
2014/06/16 职场文书
承诺函格式模板
2015/01/21 职场文书
会议接待欢迎词范文
2015/01/26 职场文书