正則匹配/g在onfocus事件校驗不準的小bug
阿新 • • 發佈:2018-12-05
最近在做表單校驗頁面,發現當正則匹配物件是/g的情況時,會出現校驗不準的小bug,第一次focus時匹配正確,第二次focus時裡面的值就不正確了,依次重複,非常奇怪;後來仔細看了global引數,是指完全匹配裡面的字串,但是按理說也不會一直校驗不準確。
後來嘗試不新增引數,或者將引數改為i,就可以成功校驗了。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="js/jquery-3.3.1.min.js"></script> </head> <body> <input type="text" class="p"> <script> var p = document.querySelector(".p"); var reg = new RegExp("^1(33|49|53|7[37]|8[0,1,9]|99)[0-9]{8}$","g"); p.onfocus=function () { setTimeout(function () { if(reg.test(p.value)){ console.log("校驗成功"); }else{ console.log("校驗失敗"); } },200) } </script> </body> </html>
打印出來的效果:
這個bug尚未解決,用jq也會出現一樣的情況;