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 相关文章推荐
jquery animate 动画效果使用说明
Nov 04 Javascript
JQuery跨Iframe选择实现代码
Aug 19 Javascript
jquery自定义滚动条插件示例分享
Feb 21 Javascript
Bootstrap每天必学之js插件
Nov 30 Javascript
JavaScript中自带的 reduce()方法使用示例详解
Aug 10 Javascript
遍历js中对象的属性和值的实例
Nov 21 Javascript
使用 Node.js 对文本内容分词和关键词抽取
May 27 Javascript
vue中使用iview自定义验证关键词输入框问题及解决方法
Mar 26 Javascript
jQuery实现的上传图片本地预览效果简单示例
Mar 29 jQuery
Vue.js子组件向父组件通信的方法实例代码详解
Dec 10 Javascript
Vue组件通信入门之Provide和Inject机制
Dec 29 Javascript
Jquery cookie插件实现原理代码解析
Aug 04 jQuery
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 常用函数库和一些实用小技巧
2009/01/01 PHP
PHP自带函数给数字或字符串自动补齐位数
2014/07/29 PHP
php版微信小店API二次开发及使用示例
2016/11/12 PHP
php中引用符号(&)的使用详细介绍
2016/12/06 PHP
jquery 指南/入门基础
2007/11/30 Javascript
jquery键盘事件使用介绍
2011/11/01 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
javascript数组操作(创建、元素删除、数组的拷贝)
2014/04/07 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
jquery实现可自动收缩的TAB网页选项卡代码
2015/09/06 Javascript
JavaScript在网页中画圆的函数arc使用方法
2015/11/13 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
jQuery实现简单的抽奖游戏
2017/05/05 jQuery
详解webpack+vue-cli项目打包技巧
2017/06/17 Javascript
Vue keep-alive实践总结(推荐)
2017/08/31 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
JavaScript基础之this和箭头函数详析
2019/09/05 Javascript
Python中SOAP项目的介绍及其在web开发中的应用
2015/04/14 Python
Scrapy爬虫实例讲解_校花网
2017/10/23 Python
Django入门使用示例
2017/12/12 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
详解python的argpare和click模块小结
2019/03/31 Python
python视频按帧截取图片工具
2019/07/23 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
2019/12/25 Python
python在不同条件下的输入与输出
2020/02/13 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
中医专业应届生求职信
2013/11/17 职场文书
省委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
2014年禁毒工作总结
2014/11/24 职场文书
活着观后感
2015/06/03 职场文书
办公室规章制度范本
2015/08/04 职场文书
Navicat连接MySQL错误描述分析
2021/06/02 MySQL
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers