最新资讯当前位置:菲娱2 > 最新资讯 > >

JavaScript中误用/g导致的正则test()无法正确重复执

  

[js正则test]JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案

  

一个简单的利用正则判断输入是否为数字:  
恒行平台官网  

  
  
  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,  

(责任编辑:admin)

上一篇:恒行平台官网:微信小程序实战之自定义模态弹窗

下一篇:浅谈angularjs $http提交数据探索

推荐内容

客户服务热线

010-400-12345

在线客服