代码:对IP地址进行校验
const ipReg = /^((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))$/g
function valiIpv4(ip) {
return ipReg.test(ip)
}
结果:
测试该方法,一次true,下一次就是false
解决办法:
1.去掉ipReg末尾的g,原因是正则表达式会有一个lastIndex来匹配校验位置,当第一次校验,lastIndexOf从0开始,第二次,就从ipReg.length的位置开始了,所以此次校验就是false,去掉g,就还是从0开始
2.不要把正则表单时保存到变量中,直接使用iPreg.test()
3. 每次把ipReg.lastIndexOf清零