正则校验test结果一次true一次false问题

代码:对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清零

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容