javascript正则写法,/1[0-9]{10}/g,用于验证手机号,这样做失焦验证时反复会出现验证错误!
效果如下:以下是html代码:以下是javascript代码:问题是:我在第4行验证那加了个g后,点phone的input的输入框,第一次失焦验证正常,什么也没弹出,第二...
效果如下:
以下是html代码:
以下是javascript代码:
问题 是:
我在第4行验证那加了个g后,点phone的input的输入框,第一次失焦验证正常,什么也没弹出,第二次失焦弹出“请输入正确的电话号码”,第三次失焦又正常,第四次又弹出,…………来回的这样反复,为什么?我试过去掉那个全局查找,正常,为什么加了个g成这样?
下面我把原代码贴上:
html:
<label>phone:</label><input type="text" name="phone" id="phone" placeholder="phone"><span class="">*</span><br>
javascript:
window.onload=function () { var _name=document.getElementById("name"); var phone=document.getElementById("phone"); var phoneRex=/1[0-9]{10}$/g;//电话号码验证 _name.onblur=function () { var _nameval=this.value; yangzheng(this,_nameval); }; phone.onblur=function () {//电话号失焦函数 var phonename=this.value; yangzheng(this,phonename,phoneRex,"请输入正确的电话号码") //alert(phoneRex.test(phonename)); }; function yangzheng (element,value,Rex,msg) {//验证 if (!(Rex.test(value))) { alert(msg) }; };} 展开
以下是html代码:
以下是javascript代码:
问题 是:
我在第4行验证那加了个g后,点phone的input的输入框,第一次失焦验证正常,什么也没弹出,第二次失焦弹出“请输入正确的电话号码”,第三次失焦又正常,第四次又弹出,…………来回的这样反复,为什么?我试过去掉那个全局查找,正常,为什么加了个g成这样?
下面我把原代码贴上:
html:
<label>phone:</label><input type="text" name="phone" id="phone" placeholder="phone"><span class="">*</span><br>
javascript:
window.onload=function () { var _name=document.getElementById("name"); var phone=document.getElementById("phone"); var phoneRex=/1[0-9]{10}$/g;//电话号码验证 _name.onblur=function () { var _nameval=this.value; yangzheng(this,_nameval); }; phone.onblur=function () {//电话号失焦函数 var phonename=this.value; yangzheng(this,phonename,phoneRex,"请输入正确的电话号码") //alert(phoneRex.test(phonename)); }; function yangzheng (element,value,Rex,msg) {//验证 if (!(Rex.test(value))) { alert(msg) }; };} 展开
1个回答
展开全部
这个很好理解的,全局查找的第一次是从开头找起,能找到,第二次找的时候是从你第一次找到的位置开始继续向后找,这时就找不到了,由于第二次找的时候已经找到的结尾处,所有第三次找的时候又是从开头找起,所有第三次能找到,第四次和第二次情况一样,依次类推。你那个正则表达式是有问题的,因为你没有匹配开头和结尾,所有我在手机号前后加内容是能通过验证的。
更多追问追答
追问
请你帮我修改个正确写法!
追答
/^1[0-9]{10}$/,你以前是匹配了结尾的但是没匹配开头。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询