jQuery验证电话号码

jQuery验证电话号码

问题描述:

我想验证电话号码为: (000)111-1111 我正在使用此代码段,如果用户只输入数字,则工作正常。但如果他开始一个括号,所有崩溃..我真的需要帮助......jQuery验证电话号码

$("input#phone1,input#phone2").keyup(function() { 
     var curchr = this.value.length; 
     var curval = $(this).val(); 
     //var numericReg = /^\d*[0-9](|.\d*[0-9]|,\d*[0-9])?$/; 
     var numericReg = /^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/; 
     if(!numericReg.test(curval)) { 
      $(this).prev('label').append(tag_error + numeric_chars_only + end_tag); 
      console.log($(this)+numeric_chars_only); 
     } 
     if (curchr == 3) { 
      $("input#phone1").val("(" + curval + ")" + " "); 
     } else if (curchr == 9) { 
      $("input#phone1").val(curval + "-"); 
     } 
    }); 
+0

“tag_error”,“numeric_chars_only”和“end_tag”定义在哪里? – 2012-03-29 18:05:45

+1

这只是提醒用户.. – 2012-03-29 18:06:29

+0

嗨!嗯,我已经为你创建了这个 - http://jsfiddle.net/5NCQg/18/你可以给我们演示一个演示你的意思是onkeyup验证? :)此外http://*.com/questions/995183/how-to-allow-only-numeric-0-9-in-html-inputbox-using-jquery **或** http:// *。 com/questions/6960596/jquery-for-phone-numbers-example-of-a-regular-expression可能会给你更好的想法!欢呼 – 2012-03-29 18:26:00

我会建议使用这样的:(?\ d {3})???

^[ - ] \ d {3} [ - ] \ d {4} $

它允许 (555)555-5555, 5555555555, 555 555 5555, 555-555-5555, (555)-555-5555

ETC.

我觉得这是你所需要的:

/^\(\d{3}\) \d{3}-\d{4}$/ 

var x = '(000) 111-1111'.replace(/^\(\d{3}\) \d{3}-\d{4}$/, ""); 
alert(x);​ // alerts empty string. the regular expression worked. 

Live DEMO

+0

是的,但如果用户开始输入“括号”,则片段会将第一个char更改为brcket,然后是所有崩溃:S如果用户输入 – 2012-03-29 18:01:50

+0

@AngelM,则需要防止更改括号。你能举个例子吗?你是什么意思? – gdoron 2012-03-29 18:02:34

+0

如果没有括号或空格或短划线,这不起作用,我想OP也想这样做:-) – altschuler 2012-03-29 18:04:40