Javascript电话号码验证

Javascript电话号码验证

问题描述:

我需要验证JavaScript中的电话号码。 的要求是:Javascript电话号码验证

他们应该是10位数字,没有逗号,没有 破折号,只是数字,而不是前面的 1+

这是我写到目前为止

function validatePhone(field,alerttxt) { 
    with (field) { 
     if(value.length > 10) { 
      alert(alerttext); 
      return false; 
     } 
     for(i = 0; i < value.length; i++) { 
      if(parseInt(value[i]) == NaN) { 
       alert(alerttxt); 
       return false; 
      } 
     } 
     return true; 
    } 
} 
function validateForm(thisform) { 
     if (validatePhone(phone,"Invalid phone number")==false) { 
      phone.focus(); 
      return false; 
     } 

    } 
} 
    <form action="post.php" method="post" id="contactform" onsubmit="return validateForm(this)"> 
    <ol> 
     <label for="phone">Your phone <span class="red"></span></label> 
     <input id="phone" name="phone" class="text" /> 
     </li> 
    </ol> 
    </form> 

但是,显然它不起作用。 如何编写validatePhone()函数以使其正常工作?

+6

什么是不友好的系统。让人们输入空格和破折号,然后忽略它们。国际电话号码呢? – Quentin 2010-03-05 10:43:37

+0

这看起来像一个学校作业。对于严重使用,您*不应使用正则表达式来[正确验证电话号码](http://stackoverflow.com/a/4338544/1269037)。 – 2014-02-26 07:52:12

+0

@DanDascalescu其实在那个时候,这不是一个学派。 RentACoder – 2014-02-26 10:38:18

phone = phone.replace(/[^0-9]/g, ''); 
if(phone.length != 10) { 
    alert("not 10 digits"); 
} else { 
    alert("yep, its 10 digits"); 
} 

这将验证和/或根据您的要求更正,删除所有非数字。

+1

为什么不只是使用match?正如我所说的“验证和/或更正”, – Marius 2010-03-05 10:47:19

+5

就是为什么不能匹配。当用户很容易删除时,强迫某人输入电话号码的用户体验很差,无法使用空格或破折号。 – Erik 2010-03-05 10:53:05

+0

谢谢,我真的很喜欢'纠正'正则表达式:-) – 2010-03-05 11:47:37

固定功能:

function validateForm(thisform) { 
     if (validatePhone(thisform.phone,"Invalid phone number")==false) { 
      thisform.phone.focus(); 
      return false; 
     } 
     return true; 
} 
+0

只是一个低级的工作我忘了在函数的开头加入(thisform),但实际上我写了它) – 2010-03-05 13:30:03

+1

但是你也有额外的“}”符号 – antyrat 2010-03-05 14:23:29

你可以使用正则表达式:

function validatePhone(field, alerttext) { 
    if (field.match(/^\d{10}/)) { 
     return true; 
    } 
    alert(alerttext); 
    return false; 
} 
+0

你*不应该*,实际上,使用正则表达式来[正确验证电话号码](http://stackoverflow.com/a/4338544/1269037)。 – 2014-02-26 07:50:17

+0

他的要求说,他应该检查一个10位数字格式没有别的。所以这个正则表达式检查应该没问题。您是对的:我不喜欢将我强制转换为特定电话号码格式的应用程序。检查最小长度,数字和任何顺序的一些() - + /字符都可以,例如:'^ [0-9()+/-] {5,} $' – arnep 2014-02-27 07:59:13

守则惟独数字括号和破折号

function DoValidatePhone() { 
    var frm = document.forms['editMemberForm'];     
    var stripped = frm.contact.value; 
    var isGoodMatch = stripped.match(/^[0-9\s(-)]*$/); 
    if (!isGoodMatch) { 
     alert("The Emergency Contact number contains invalid characters." + stripped); 
     return false; 
    } 
} 

谷歌的libphonenumber是验证和电话号码的格式在世界各地非常有帮助。它比使用RegEx更容易,更隐蔽,更健壮,它有JavaScript,Ruby,Python,C#,PHP和Objective-C风味。

+1

* This *。人们似乎并不了解[正则表达式是天真的解决方案](http://stackoverflow.com/questions/37684/how-to-replace-plain-urls-with-links/21925491#21925491)验证真实世界的数据。 – 2014-02-26 07:44:43

function validate(phoneString){ 

    reg = /^([+|\d])+([\s|\d])+([\d])$/; 

    return reg.test(phoneString); 

}