验证长度为10到11个字符的数字

时间:2010-03-22 18:39:09

标签: javascript forms validation

我正在使用javascript(和PHP)验证带有电话号码字段的简单表单。我有它工作正常检查该字段只有10个字符,但我真的想检查该字段是否有10到11个字符。

原因是,有些人输入的数字是这样的:1 555 555 5555,有些人这样做555 555 5555.

以下是我所用的,用于检查长度是否为10:

        if (!(stripped.length == 10)) {
            alert("Please enter a valid US phone number.")
            return false
        } 

4 个答案:

答案 0 :(得分:2)

简单的答案是在if:

中添加一个检查
if (!(stripped.length == 10 || stripped.length == 11)) { ... }

答案 1 :(得分:2)

很好地做你要问的事情:

if (stripped.length != 10 && stripped.length != 11) {
    alert("Please enter a valid US phone number.")
    return false
} 

不过,您可以考虑使用正则表达式来验证电话号码,因为它们可以轻松验证大量条件。

借鉴RegEx Buddy(我强烈建议,因为它会帮助您剖析和理解正则表达式):

var phoneRegex = /\(?\b[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}\b/;​​

var phone = '3334445555';

if(!phone.match(phoneRegex)){
    alert('please enter a valid phone number');
}
​

匹配3334445555,333.444.5555,333-444-5555,333 444 5555,(333)444 5555及其所有组合。

修改

@ pawel提出了一个很好的观点。验证的最佳方法是首先删除除数字之外的所有字符。然后确保您具有正确的位数,然后将该剥离的统一编号保存到服务器。正则表达式仅适用于查找隐藏在更大文本块中的有效电话号码。这真的不是一个明智的选择... oops:)

答案 2 :(得分:1)

你可能真的想要10个字符,或1个,后跟10个字符。

if (!(stripped.length === 10 || stripped.length === 11 && stripped.charAt(0) === "1")) {
  // invalid...
}

答案 3 :(得分:0)

我想通了,只需要快速刷新JS 101就可以了。我实际上试图使用OR ||运算符,但是这样做10||11没有效果。

这有效:

if (!(stripped.length == 10 || stripped.length == 11)) {
    alert("Please enter a valid US phone number.")
    return false
}