欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決js相同的正則多次調(diào)用test()返回的值卻不同的問題

 更新時(shí)間:2018年10月10日 08:59:02   作者:專注前端30年  
今天小編就為大家分享一篇解決js相同的正則多次調(diào)用test()返回的值卻不同的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

代碼是這樣的:

var reg = /^1[345678][0-9]{9}$/g;
console.log(reg.test(15328044636));
console.log(reg.test(15328044636));

會(huì)發(fā)現(xiàn)控制臺(tái)打印的數(shù)據(jù)卻是:

true
false

問題原因

這是因?yàn)檎齽treg的g屬性,設(shè)置的全局匹配。RegExp有一個(gè)lastIndex屬性,來保存索引開始位置。

上面的問題,第一次調(diào)用的lastIndex值為0,到了第二次調(diào)用,值變成了11。

var reg = /^1[345678][0-9]{9}$/g;
console.log(reg.lastIndex, reg.test(15328044636));
console.log(reg.lastIndex, reg.test(15328044636));

//打印的值
0 true
11 false

解決方案

第一種方案是將g去掉,關(guān)閉全局匹配。

第二種就是在每次匹配之前將lastIndex的值設(shè)置為0。

var reg = /^1[345678][0-9]{9}$/g;
console.log(reg.lastIndex, reg.test(15328044636));
reg.lastIndex = 0;
console.log(reg.lastIndex, reg.test(15328044636));

//打印的值
0 true
0 true

以上這篇解決js相同的正則多次調(diào)用test()返回的值卻不同的問題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論