let add="121432453253";
let abb="1214321321"
let testdemo=/^([0-9]+)$/g
if(testdemo.test(add)){
console.log(true)//true
}else{
console.log(false)
}
if(testdemo.test(abb)){
console.log(true)
}else{
console.log(false)//false
}
按理说两次都打印true的,后来我把全局查找g去掉,就两个都是true了,导致这样的原因是:
如果正则表达式有指定g参数全局匹配 , 则每次test()是依次获得下一个匹配。举例说明:
var num="123";
var argur=/([0-9])/g;
for(i=0;i<8;i++){
console.log(argur.test(num));
}
上面的代码结果是3个true,1个false,再3个true,再1个false。
true true true false true true true false
第1次test匹配数字1,第2次test数字2,第3次test匹配数字3,第4次test找不到匹配,之后又从头重新开始:
第5次重头开始test匹配数字1,第6次test数字2,第6次test数字3,第8次test找不到匹配............
如果正则表达式没有g参数,则每次test都是从头开始匹配,不存在上述问题。
没有g参数的正则表达式:
var num="123";
var argur=/([0-9])/g;
for(i=0;i<8;i++){
console.log(argur.test(num));
}
都是true,
不过利用这个全局g也可以打印出你每次想要匹配到的数据,看你有没有这个需求而已