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 相关文章推荐
解决FireFox下[使用event很麻烦]的问题
Nov 26 Javascript
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
Jun 25 Javascript
javascript 函数及作用域总结介绍
Nov 12 Javascript
JavaScript动态修改背景颜色的方法
Apr 16 Javascript
javascript实现设置、获取和删除Cookie的方法
Jun 01 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
Apr 21 Javascript
Vue.extend构造器的详解
Jul 17 Javascript
Vue组件通信的四种方式汇总
Feb 08 Javascript
微信小程序之分享页面如何返回首页的示例
Mar 28 Javascript
详解Vue 动态组件与全局事件绑定总结
Nov 11 Javascript
jQuery弹框插件使用方法详解
May 26 jQuery
vue实现图片裁剪后上传
Dec 16 Vue.js
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获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
2014/05/19 PHP
php实现可逆加密的方法
2015/08/11 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
JQuery 无废话系列教程(二) jquery实战篇上
2009/06/23 Javascript
JavaScript 的方法重载效果
2009/08/07 Javascript
用JQuery在网页中实现分隔条功能的代码
2012/08/09 Javascript
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
在jquery中的ajax方法怎样通过JSONP进行远程调用
2014/04/04 Javascript
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
2016/08/03 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
vue2.0中goods选购栏滚动算法的实现代码
2017/05/17 Javascript
JavaScript 巧学巧用
2017/05/23 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
vue keep-alive请求数据的方法示例
2018/05/16 Javascript
详解Vue项目中实现锚点定位
2019/04/24 Javascript
Python中的localtime()方法使用详解
2015/05/22 Python
Python字符串匹配算法KMP实例
2015/07/18 Python
python中的随机函数小结
2018/01/27 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
PyCharm+PyQt5+QtDesigner配置详解
2020/08/12 Python
瑞士国际航空官网:SWISS
2016/07/21 全球购物
联想澳大利亚官网:Lenovo Australia
2018/01/18 全球购物
英国可持续奢侈品包包品牌:Elvis & Kresse
2018/08/05 全球购物
宾馆总经理岗位职责
2014/02/14 职场文书
岗位职责说明书
2014/05/07 职场文书
优秀实习生主要事迹
2014/05/29 职场文书
食品安全标语
2014/06/07 职场文书
项目合作意向书模板
2014/07/29 职场文书
JavaScript+HTML实现学生信息管理系统
2021/04/20 Javascript
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android