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 相关文章推荐
jQuery autocomplete插件修改
Apr 17 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
Jul 31 Javascript
JS获取页面input控件中所有text控件并追加样式属性
Feb 25 Javascript
JavaScript实现复制功能各浏览器支持情况实测
Jul 18 Javascript
微信小程序 wxapp内容组件 text详细介绍
Oct 31 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
Jul 19 Javascript
ES6中Class类的静态方法实例小结
Oct 28 Javascript
iview table高度动态设置方法
Mar 14 Javascript
vue移动端实现下拉刷新
Apr 22 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
Oct 12 Javascript
详解Vue用cmd创建项目
Feb 12 Javascript
vue 更改连接后台的api示例
Nov 11 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
DOTA2 无惧惊涛骇浪 昆卡大型水友攻略
2020/04/20 DOTA
PHP语法小结之基础和变量
2015/11/22 PHP
深入了解PHP中的Array数组和foreach
2016/11/06 PHP
PHP实现浏览器中直接输出图片的方法示例
2018/03/14 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
javascript 日期时间函数(经典+完善+实用)
2009/05/27 Javascript
基于JQuery的cookie插件
2010/04/07 Javascript
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
2013/03/29 Javascript
js时间戳格式化成日期格式的多种方法
2013/11/11 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
2015/08/14 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
JavaScript中的数据类型转换方法小结
2015/10/26 Javascript
JavaScript实现多种排序算法
2016/02/24 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
2017/01/10 Javascript
vue-cli+webpack记事本项目创建
2017/04/01 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
2017/08/19 jQuery
javascript帧动画(实例讲解)
2017/09/02 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
2019/09/06 Javascript
[01:00:59]VP VS VG Supermajor小组赛胜者组第二轮 BO3第二场 6.2
2018/06/03 DOTA
详解Python中dict与set的使用
2015/08/10 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
全球航班旅行搜索网站:Cheapflights
2017/05/19 全球购物
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
女士时装鞋:Chinese Laundry
2018/08/29 全球购物
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
2016/04/13 面试题
初三班主任寄语大全
2014/04/04 职场文书
户外活动总结范文
2014/04/30 职场文书
opencv深入浅出了解机器学习和深度学习
2022/03/17 Python