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) }; };}
展开
 我来答
shuyue_888
2015-07-22 · TA获得超过417个赞
知道小有建树答主
回答量:406
采纳率:84%
帮助的人:312万
展开全部
这个很好理解的,全局查找的第一次是从开头找起,能找到,第二次找的时候是从你第一次找到的位置开始继续向后找,这时就找不到了,由于第二次找的时候已经找到的结尾处,所有第三次找的时候又是从开头找起,所有第三次能找到,第四次和第二次情况一样,依次类推。你那个正则表达式是有问题的,因为你没有匹配开头和结尾,所有我在手机号前后加内容是能通过验证的。
更多追问追答
追问
请你帮我修改个正确写法!
追答
/^1[0-9]{10}$/,你以前是匹配了结尾的但是没匹配开头。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式