1. 程式人生 > >正則匹配/g在onfocus事件校驗不準的小bug

正則匹配/g在onfocus事件校驗不準的小bug

最近在做表單校驗頁面,發現當正則匹配物件是/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也會出現一樣的情況;