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 相关文章推荐
Microsfot .NET Framework4.0框架 安装失败的解决方法
Aug 14 Javascript
JS关闭窗口与JS关闭页面的几种方法小结
Dec 17 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
Jun 05 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
Oct 17 Javascript
node.js中的path.basename方法使用说明
Dec 09 Javascript
使用VS开发 Node.js指南
Jan 06 Javascript
jQuery动态创建元素以及追加节点的实现方法
Oct 20 Javascript
js使用i18n实现页面国际化的方法
May 09 Javascript
node内置调试方法总结
Feb 22 Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
Sep 21 Javascript
如何在 Vue 表单中处理图片
Jan 26 Vue.js
聊聊JS ES6中的解构
Apr 29 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检查日期函数checkdate用法实例
2015/03/19 PHP
PHP简单实现断点续传下载的方法
2015/09/25 PHP
利用PHP生成CSV文件简单示例
2016/12/21 PHP
ExtJS PropertyGrid中使用Combobox选择值问题
2010/06/13 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
jquery 取子节点及当前节点属性值
2014/07/25 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
2015/03/26 Javascript
javascript中关于&& 和 || 表达式的小技巧分享
2015/04/10 Javascript
轻松实现javascript图片轮播特效
2016/01/13 Javascript
jQuery Mobile 和 Kendo UI 的比较
2016/05/05 Javascript
JS中绑定事件顺序(事件冒泡与事件捕获区别)
2017/01/24 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
2017/03/15 Javascript
axios中cookie跨域及相关配置示例详解
2017/12/20 Javascript
详解webpack import()动态加载模块踩坑
2018/07/17 Javascript
vue计算属性get和set用法示例
2019/02/08 Javascript
在Express中提供静态文件的实现方法
2019/10/17 Javascript
Vue 一键清空表单的实现方法
2020/02/07 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
Pyramid Mako模板引入helper对象的步骤方法
2013/11/27 Python
Python图像处理之颜色的定义与使用分析
2019/01/03 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
python实现猜拳小游戏
2020/04/05 Python
Python列表操作方法详解
2020/02/09 Python
详解Python的三种拷贝方式
2020/02/11 Python
SpringBoot首页设置解析(推荐)
2021/02/11 Python
介绍一下OSI七层模型
2012/07/03 面试题
家长给孩子的评语
2014/01/30 职场文书
高中校园广播稿
2014/10/21 职场文书
2015年学校安全工作总结
2015/04/22 职场文书
项目战略合作意向书
2015/05/08 职场文书
2019年最新版见习人员管理制度!
2019/07/08 职场文书
使用pandas模块实现数据的标准化操作
2021/05/14 Python
python之json文件转xml文件案例讲解
2021/08/07 Python