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 相关文章推荐
关于include标签导致js路径找不到的问题分析及解决
Jul 09 Javascript
Extjs4中Form的使用之本地hiddenfield
Nov 26 Javascript
js获取浏览器基本信息大全
Nov 27 Javascript
js实现的简洁网页滑动tab菜单效果代码
Aug 24 Javascript
常见的javascript跨域通信方法
Dec 31 Javascript
最原始的jQuery注册验证方式
Oct 11 Javascript
angular 动态组件类型详解(四种组件类型)
Feb 22 Javascript
JavaScript实现换肤功能
Sep 15 Javascript
浅谈JavaScript作用域和闭包
Sep 18 Javascript
JS实现简单的浮动碰撞效果示例
Dec 28 Javascript
Vue axios 将传递的json数据转为form data的例子
Oct 29 Javascript
如何在 Vue 表单中处理图片
Jan 26 Vue.js
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中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
php 问卷调查结果统计
2015/10/08 PHP
LNMP部署laravel以及xhprof安装使用教程
2017/09/14 PHP
PHP常见字符串操作函数与用法总结
2019/03/04 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
jQuery获取某天的农历日期并判断是否除夕或新年的方法
2016/03/01 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
深入理解JS DOM事件机制
2016/08/06 Javascript
垃圾回收器的相关知识点总结
2018/05/13 Javascript
微信小程序仿微信运动步数排行(交互)
2018/07/13 Javascript
详解webpack import()动态加载模块踩坑
2018/07/17 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
Python中的pass语句使用方法讲解
2015/05/14 Python
Java中重定向输出流实现用文件记录程序日志
2015/06/12 Python
最大K个数问题的Python版解法总结
2016/06/16 Python
Python logging模块用法示例
2018/08/28 Python
python实现维吉尼亚算法
2019/03/20 Python
Python2与Python3的区别详解
2020/02/09 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
小学教师的个人自我鉴定
2013/10/26 职场文书
销售心得体会
2014/01/02 职场文书
音乐教学反思
2014/02/02 职场文书
校企合作协议书
2014/04/16 职场文书
青安岗事迹材料
2014/05/14 职场文书
2014党员学习《反腐倡廉警示教育读本》思想汇报
2014/09/13 职场文书
个人总结与自我评价
2014/09/18 职场文书
2014年项目工作总结
2014/11/24 职场文书
2014员工聘用协议书(最新版)
2014/11/24 职场文书
歌剧魅影观后感
2015/06/05 职场文书
我的长征观后感
2015/06/09 职场文书