星空网 > 软件开发 > Java

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

一个简单的利用正则判断输入是否为数字:

input1 = '0281234567';
input2 = '0282345678';
var reg = /^\d+$/g;reg.test(input1); //truereg.test(input2); //false

发现第二次test的时候返回的值不对了.排除书写错误,取值失败等等各种干扰因素后,发现仅仅是reg正则第二次执行的时候就无法正确执行了.之前并未遇到过这个问题,便搜索了一下相关信息.

原来这个问题实际上是/g导致的,而此时也才发现,实际上这个正则我误用了一个/g.因为/g代表全局匹配,所以判断正则时内部是有一个lastIndex来记录最后匹配的位置.当重复调用的时候,会接着上次的lastIndex继续匹配,故而将导致判断出错.明白了原理解决起来也就很明了了:

1.去掉/g,在不需要/g的情况下不要随意添加/g标识

2.第二次匹配前,手动将lastIndex置0,以上面的例子来说:reg.lastIndex()=0即可.




原标题:JS中误用/g导致的正则test()无法正确重复执行

关键词:JS

JS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

亚马逊账户被暂停?10年跨境老鸟教你如何避免:https://www.ikjzd.com/articles/123376
亚马逊Q&A捋好了,这可是带动销量的利器!:https://www.ikjzd.com/articles/123377
一个合格的亚马逊运营在新品推广前该做那些准备工作:https://www.ikjzd.com/articles/123378
2018跨境圈邮政涨价、库存限制,卖家该如何规划自己的成本?:https://www.ikjzd.com/articles/12338
速卖通如何选品?新手卖家选品方式有哪些?:https://www.ikjzd.com/articles/123381
美国40城宵禁,中国卖家商品或成购物“唯一途径”?:https://www.ikjzd.com/articles/123384
TikTok 将推出先买后付服务 :https://www.kjdsnews.com/a/1836651.html
TikTok 将推出先买后付服务 :https://www.goluckyvip.com/news/188219.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流