其他分享
首页 > 其他分享> > js相同的正则多次调用test()返回的值却不同

js相同的正则多次调用test()返回的值却不同

作者:互联网

项目中文件上传需要验证文件的格式,第一次正常,第二次就验证不通过了。在验证的地方console.log()两遍,发现结果不一样 !!!

正则和文件名都没变,但是两次的验证结果不同。

this.reg = /\.(xlsx|xls)$/ig;
console.log(this.reg.test(newFile.name)) //true
console.log(this.reg.test(newFile.name)) //false

 

lastIndex 这一属性用于匹配下次检索的开始位置,该属性可读写,exec() 或 test()方法可以改写这一属性。

当找不到匹配内容是,lastIndex被自动设为0。

解决方案

第一种方案是将g去掉,关闭全局匹配。

第二种就是在每次匹配之前将lastIndex的值设置为0。

标签:console,log,验证,lastIndex,js,正则,test,reg
来源: https://www.cnblogs.com/gxp69/p/11383919.html