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小实验之函数引用
Nov 17 Javascript
jquery.fileEveryWhere.js 一个跨浏览器的file显示插件
Oct 24 Javascript
js通过地址栏给action传值(中文乱码全是问号)
May 02 Javascript
jQuery动画效果相关方法实例分析
Dec 31 Javascript
AngularJS ng-change 指令的详解及简单实例
Jul 30 Javascript
JS实现太极旋转思路分析
Dec 09 Javascript
AngularJS实现页面定时刷新
Mar 14 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
Apr 13 Javascript
bootstrap table使用入门基本用法
May 24 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
Jul 18 jQuery
Vue组件的使用教程详解
Jan 05 Javascript
React中的refs的使用教程
Feb 13 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 5.3.x 的strtotime() 时区设定 警告信息修复
2013/08/05 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
2013/08/06 PHP
PHP也能干大事 随机函数
2015/04/14 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
PHP读取、解析eml文件及生成网页的方法示例
2017/09/04 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
JavaScript 对象、函数和继承
2009/07/07 Javascript
return false;和e.preventDefault();的区别
2010/07/11 Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
2014/04/10 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
移动端效果之Swiper详解
2017/10/09 Javascript
详解Vue Elememt-UI构建管理后台
2018/02/27 Javascript
学习RxJS之JavaScript框架Cycle.js
2019/06/17 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
vuex 实现getter值赋值给vue组件里的data示例
2019/11/05 Javascript
Vue中使用JsonView来展示Json树的实例代码
2020/11/16 Javascript
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
python处理csv数据的方法
2015/03/11 Python
Python基于matplotlib绘制栈式直方图的方法示例
2017/08/09 Python
Django实现简单分页功能的方法详解
2017/12/05 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
Python调用Windows API函数编写录音机和音乐播放器功能
2020/01/05 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
2020/03/30 Python
python中watchdog文件监控与检测上传功能
2020/10/30 Python
详解CSS3选择器的使用方法汇总
2015/11/24 HTML / CSS
HTML5离线缓存Manifest是什么
2016/03/09 HTML / CSS
Meli Melo官网:名媛们钟爱的英国奢侈手包品牌
2017/04/17 全球购物
怎样声明子类
2013/07/02 面试题
应聘自荐信
2013/12/14 职场文书
城市轨道交通工程职业规划书范文
2014/01/18 职场文书
《地震中的父与子》教学反思
2014/04/10 职场文书
副科竞争上岗演讲稿
2014/05/12 职场文书
商务经理岗位职责
2014/08/03 职场文书
六年级语文教学反思
2016/03/03 职场文书
使用redis生成唯一编号及原理示例详解
2021/09/15 Redis