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 相关文章推荐
JS小功能(offsetLeft实现图片滚动效果)实例代码
Nov 28 Javascript
深入理解JavaScript是如何实现继承的
Dec 12 Javascript
jQuery制作仿Mac Lion OS滚动条效果
Feb 10 Javascript
基于JavaScript代码实现微信扫一扫下载APP
Dec 30 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
Jun 25 Javascript
Koa2 之文件上传下载的示例代码
Mar 29 Javascript
jQuery实现的滑块滑动导航效果示例
Jun 04 jQuery
Vue中的情侣属性$dispatch和$broadcast详解
Mar 07 Javascript
简单了解小程序+node梳理登陆流程
Jun 24 Javascript
element-ui中el-upload多文件一次性上传的实现
Dec 02 Javascript
vue3使用vue-count-to组件的实现
Dec 25 Vue.js
详解template标签用法(含vue中的用法总结)
Jan 12 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
第九节--绑定
2006/11/16 PHP
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
2015/11/19 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
2016/09/22 PHP
jQuery toggle()设置CSS样式
2009/11/05 Javascript
Javascript 类、命名空间、代码组织代码
2011/07/31 Javascript
jQuery中:visible选择器用法实例
2014/12/30 Javascript
js实现非常简单的焦点图切换特效实例
2015/05/07 Javascript
易被忽视的js事件问题总结
2016/05/14 Javascript
Vue.js快速入门教程
2016/09/07 Javascript
vue使用watch 观察路由变化,重新获取内容
2017/03/08 Javascript
Vue组件之自定义事件的功能图解
2018/02/01 Javascript
对vue.js中this.$emit的深入理解
2018/02/23 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
解决vue项目打包后提示图片文件路径错误的问题
2018/07/04 Javascript
vue分页插件的使用方法
2019/12/25 Javascript
Vue自定义组件双向绑定实现原理及方法详解
2020/09/03 Javascript
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
Python之PyUnit单元测试实例
2014/10/11 Python
Python脚本实现网卡流量监控
2015/02/14 Python
python利用小波分析进行特征提取的实例
2019/01/09 Python
Python自定义函数计算给定日期是该年第几天的方法示例
2019/05/30 Python
PyQt5 窗口切换与自定义对话框的实例
2019/06/20 Python
Python图像处理PIL各模块详细介绍(推荐)
2019/07/17 Python
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
德国团购网站:Groupon德国
2018/03/13 全球购物
Madewell澳大利亚官方网站:美国休闲服饰品牌
2019/07/18 全球购物
工商管理毕业生推荐信
2013/12/24 职场文书
文明学生事迹材料
2014/01/29 职场文书
安全教育主题班会总结
2015/08/14 职场文书
幼儿园家长心得体会
2016/01/21 职场文书
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android
MySQL多表查询机制
2022/03/17 MySQL
JavaScript实现音乐播放器
2022/08/14 Javascript