我正在使用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
}
答案 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
}