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实现读取txt文档的脚本
Jul 20 Javascript
一个js封装的不错的选项卡效果代码
Feb 15 Javascript
本地对象Array的原型扩展实现代码
Dec 04 Javascript
js替换字符串的所有示例代码
Jul 23 Javascript
jquery下div 的resize事件示例代码
Mar 09 Javascript
Javascript获取当前日期的农历日期代码
Oct 08 Javascript
浅谈javascript的call()、apply()、bind()的用法
Feb 21 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
Dec 19 Javascript
vue-test-utils初使用详解
May 23 Javascript
Webpack按需加载打包chunk命名的方法
Sep 22 Javascript
js实现登录时记住密码的方法分析
Apr 05 Javascript
vue实现评价星星功能
Jun 30 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获取服务器时间的实现代码
2013/06/07 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
前端js文件合并的三种方式推荐
2016/05/19 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
webpack打包单页面如何引用的js
2017/06/07 Javascript
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
基于Vue实现的多条件筛选功能的详解(类似京东和淘宝功能)
2019/05/07 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
2020/11/05 Javascript
python通过imaplib模块读取gmail里邮件的方法
2015/05/08 Python
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
python中string模块各属性以及函数的用法介绍
2016/05/30 Python
Python中operator模块的操作符使用示例总结
2016/06/28 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
详解Python 切片语法
2019/06/10 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
2020/02/26 Python
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
请说出你所知道的线程同步的方法
2013/04/19 面试题
技术总监岗位职责
2013/12/05 职场文书
甜美蛋糕店创业计划书
2014/01/30 职场文书
房屋买卖委托公证书
2014/04/08 职场文书
服务承诺口号
2014/05/22 职场文书
比赛口号大全
2014/06/10 职场文书
商务专员岗位职责范本
2014/06/29 职场文书
讲党性心得体会
2014/09/03 职场文书
教师自我剖析材料范文
2014/09/30 职场文书
毕业设计论文致谢词
2015/05/14 职场文书
杨善洲观后感
2015/06/04 职场文书
2016年社区文体活动总结
2016/04/06 职场文书
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python
Python实现双向链表基本操作
2022/05/25 Python