Javascript电话号码验证并列符号
我做了一些搜索,在那里其他人问这个问题和答案,但没有一个似乎符合我试图做的。基本上,我正在对接受(123)4567890作为条目的电话条目进行验证。我已经实现了一个可以接受简单数字字符串(如123456780)和一个带破折号123-456-7890的字符串。我知道我犯了一个简单的错误,但我不知道我做错了什么 以下是正在使用的带破折号的电话号码表单:Javascript电话号码验证并列符号,javascript,validation,Javascript,Validation,我做了一些搜索,在那里其他人问这个问题和答案,但没有一个似乎符合我试图做的。基本上,我正在对接受(123)4567890作为条目的电话条目进行验证。我已经实现了一个可以接受简单数字字符串(如123456780)和一个带破折号123-456-7890的字符串。我知道我犯了一个简单的错误,但我不知道我做错了什么 以下是正在使用的带破折号的电话号码表单: //Validates phone number with dashes. function isTwelveAndDashes(phone) {
//Validates phone number with dashes.
function isTwelveAndDashes(phone) {
if (phone.length != 12) return false;
var pass = true;
for (var i = 0; i < phone.length; i++) {
var c = phone.charAt(i);
if (i == 3 || i == 7) {
if (c != '-') {
pass = false;
}
}
else {
if (!isDigit(c)) {
pass = false;
}
}
}
return pass;
}
//用破折号验证电话号码。
函数IsWelve和破折号(电话){
如果(phone.length!=12)返回false;
var pass=真;
对于(变量i=0;i
这是我无法解决的问题
function isTwelveAndPara(phone) {
if (phone.length != 12) return false;
var pass = true;
for (var i = 0; i < phone.length; i++) {
var c = phone.charAt(i);
if (i == 0) {
if (c != '(') {
pass = false;
}
}
if (i == 4) {
if (c != ')') {
pass = false;
}
}
else {
if (!isDigit(c)) {
pass = false;
}
}
}
return pass;
}
功能是WelveandPara(电话){
如果(phone.length!=12)返回false;
var pass=真;
对于(变量i=0;i
使用regex
,您可以非常轻松地执行此操作:
return !!phone.match(/\(\d{3}\)\d{7}/g)
更新:
function isDigit(num) {
return !isNaN(parseInt(num))
}
function isTwelveAndPara(phone) {
if (phone.length != 12) return false;
for (var i = 0; i < phone.length; i++) {
var c = phone.charAt(i);
if (i == 0) {
if (c != '(') return false;
} else if (i == 4) {
if (c != ')') return false;
} else if (!isDigit(c)) return false;
}
return true;
}
// or...
function isTwelveAndPara(phone) {
if (phone.length != 12 || phone.charAt(0) != '(' || phone.charAt(4) != ')') return false;
for (var i = 1; i < phone.length, i != 4; i++) {
if (!isDigit(phone.charAt(i))) return false;
}
return true;
}
您的代码不起作用,因为您忘记了,否则如果:
else if (i == 4) { // Added the "else" on the left.
类似的东西(RegExp规则)可以确保它与任一规则匹配
var numbers = ['(1234567890','(123)4567890','123-456-7890','1234567890','12345678901'];
var rule = /^(\(\d{3}\)\d{7}|\d{3}-\d{3}-\d{4}|\d{10})$/;
for (var i = 0; i < numbers.length; i++) {
var passed = rule.test(numbers[i].replace(/\s/g,''));
console.log(numbers[i] + '\t-->\t' + (passed ? 'passed' : 'failed'));
}
var编号=['(1234567890'、'(123)4567890'、'1234567890'、'1234567890'、'1234567890'、'1234567801';
变量规则=/^(\(\d{3}\)\d{7}\d{3}-\d{3}-\d{4}\d{10})$/;
对于(变量i=0;i\t'+(通过?'passed':'failed');
}
编辑:
function isDigit(num) {
return !isNaN(parseInt(num))
}
function isTwelveAndPara(phone) {
if (phone.length != 12) return false;
for (var i = 0; i < phone.length; i++) {
var c = phone.charAt(i);
if (i == 0) {
if (c != '(') return false;
} else if (i == 4) {
if (c != ')') return false;
} else if (!isDigit(c)) return false;
}
return true;
}
// or...
function isTwelveAndPara(phone) {
if (phone.length != 12 || phone.charAt(0) != '(' || phone.charAt(4) != ')') return false;
for (var i = 1; i < phone.length, i != 4; i++) {
if (!isDigit(phone.charAt(i))) return false;
}
return true;
}
函数isDigit(num){
return!isNaN(parseInt(num))
}
功能IsWelveandPara(电话){
如果(phone.length!=12)返回false;
对于(变量i=0;i
使用RegEx检查电话号码肯定是一种方法。下面是验证
忽略空格、括号和破折号的函数:
check_phone(num) {
return num.replace(/[\s\-\(\)]/g,'').match(/^\+?\d{6,10}$/) != null}
您可以根据第二个正则表达式{6,10}中的范围更改要接受的位数
。允许使用引导+
。以下是验证电话号码的方法:不要。如果您的用户在海外怎么办?如果他们有分机怎么办?您从验证中获得的好处通常会被您无意关上的门冲掉。(没有任何验证可以确保你得到一个有效的电话号码;任何验证规则都可能被一个看起来真实、假的号码所愚弄。)澄清这不是用于商业网站,而是我教育的一部分。我想看看我做错了什么。我知道它与(和)的if语句有关字符,但我不确定将这两个字符连接到if(&&&)语句中的语法是否正确。@T.J.Crowder。您忘了提到字符串模式检查应该使用regex
。+1我在回答类似问题时看到了这个示例。我毫不怀疑它是否有效(事实上,它比我展示的编程更好),但出于练习的目的,我需要保持类似于IstwelveAndDash(电话)的风格函数。你的最后一个else部分将计算除4之外的所有i
值。你想使用else if
s来代替。请查看下面我的建议,以获得一个示例。gdoron所指的是正则表达式。对他的答案的补充:查看Mozilla或。我在回答类似问题时看到了这个示例。我毫不怀疑它是有效的(事实上比我现在展示的更好),但是为了练习的目的,我需要保持类似于IstwelveAndDash(电话)的风格函数。谢谢。我知道这是一件非常简单和愚蠢的事情。@JoshuaAslanSmith。很高兴能提供帮助。我在回答类似问题时看到了这个例子。我毫不怀疑它是有效的(事实上,它比我现在展示的编程更好),但出于练习的目的,我需要保持类似于IstwelveAndDashs(电话)函数的风格。谢谢。我知道这是一个难以置信的简单和愚蠢的部分。没问题。我写了一个替代函数,它要短得多,以防万一…