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 相关文章推荐
web 页面分页打印的实现
Jun 22 Javascript
禁止你的左键复制实用技巧
Jan 04 Javascript
Javascript浅谈之this
Dec 17 Javascript
深入理解关于javascript中apply()和call()方法的区别
Apr 12 Javascript
深入理解jQuery()方法的构建原理
Dec 05 Javascript
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
Mar 06 Javascript
Angular整合zTree的示例代码
Jan 24 Javascript
Vue的elementUI实现自定义主题方法
Feb 23 Javascript
记一次webapck4 配置文件无效的解决历程
Sep 19 Javascript
详解Nuxt.js中使用Element-UI填坑
Sep 06 Javascript
JavaScript中的几种继承方法示例
Dec 06 Javascript
JS 4个超级实用的小技巧 提升开发效率
Oct 05 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提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
PHP的时间戳与具体时间转化的简单实现
2016/06/13 PHP
Laravel 自动生成验证的实例讲解:login / logout
2019/10/14 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
jQuery filter函数使用方法
2014/05/19 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
vue2.0实战之基础入门(1)
2017/03/27 Javascript
javascript简单写的判断电话号码实例
2017/05/24 Javascript
浅谈JavaScript的innerWidth与innerHeight
2017/10/12 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
JavaScript中为事件指定处理程序的五种方式分析
2018/07/27 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
python将字符串list写入excel和txt的实例
2019/07/20 Python
Windows下Anaconda和PyCharm的安装与使用详解
2020/04/23 Python
使用python脚本自动生成K8S-YAML的方法示例
2020/07/12 Python
Python同时处理多个异常的方法
2020/07/28 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
2021/02/22 Python
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
中学教师实习自我鉴定
2013/09/28 职场文书
大学生应聘推荐信范文
2013/11/19 职场文书
医学院学生的自我评价分享
2013/11/19 职场文书
教育实习生的自我评价分享
2013/11/21 职场文书
财务部经理岗位职责
2014/02/03 职场文书
保密协议书范本
2014/04/22 职场文书
英语求职信范文
2014/05/23 职场文书
新党章的学习心得体会
2014/11/07 职场文书
抗洪救灾感谢信
2015/01/22 职场文书
班主任工作总结范文
2015/08/13 职场文书
CSS 新特性 contain控制页面的重绘与重排问题
2021/04/30 HTML / CSS
python numpy中multiply与*及matul 的区别说明
2021/05/26 Python
使用Redis实现实时排行榜功能
2021/07/02 Redis
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL