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中继承的三种方式
Oct 16 Javascript
加随机数引入脚本不让浏览器读取缓存
Sep 04 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
Jan 22 Javascript
深入浅析JavaScript中数据共享和数据传递
Apr 25 Javascript
更靠谱的H5横竖屏检测方法(js代码)
Sep 13 Javascript
jQuery实现圣诞节礼物动画案例解析
Dec 25 Javascript
AngularJS中的按需加载ocLazyLoad示例
Jan 11 Javascript
w3c编程挑战_初级脚本算法实战篇
Jun 23 Javascript
element-ui 表格实现单元格可编辑的示例
Feb 26 Javascript
使用puppeteer爬取网站并抓出404无效链接
Dec 20 Javascript
JavaScript学习笔记之DOM操作实例分析
Jan 08 Javascript
JavaScript 防篡改对象的用法示例
Apr 24 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(7) php 字符串相关应用
2010/03/05 PHP
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
非常实用的php弹出错误警告函数扩展性强
2014/01/17 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
php通过分类列表产生分类树数组的方法
2015/04/20 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
html下载本地
2006/06/19 Javascript
用正则表达式 动态创建/增加css style script 兼容IE firefox
2009/03/10 Javascript
JavaScript prototype对象的属性说明
2010/03/13 Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
2012/05/14 Javascript
js实现文本框中焦点在最后位置
2014/03/04 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
jQuery.holdReady()使用方法
2014/05/20 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
AngularJS 输入验证详解及实例代码
2016/07/28 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
通俗解释JavaScript正则表达式快速记忆
2017/08/23 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
基于Python实现的扫雷游戏实例代码
2014/08/01 Python
python实现点对点聊天程序
2018/07/28 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
Python3如何判断三角形的类型
2020/04/12 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
PurCotton全棉时代官网:100%天然棉花生产的生活护理用品
2016/11/18 全球购物
Monnier Freres中文官网:法国领先的奢侈品配饰在线零售商
2017/11/01 全球购物
ddl,dml和dcl的含义
2016/05/08 面试题
主持词开场白
2014/03/17 职场文书
大型活动组织方案
2014/05/10 职场文书
环保倡议书格式范文
2014/05/14 职场文书
劳动纠纷调解协议书格式
2014/11/30 职场文书
单位工资证明范本
2015/06/12 职场文书