我做了一些搜索,在那里其他人问这个问题并回答它,但没有一个看起来像我想做的那样。基本上我正在验证接受(123)4567890作为条目的电话条目。我已经实现了一个接受一个简单的数字字符串,如1234567890和一个破折号123-456-7890。我知道我犯了一个简单的错误,但我无法弄清楚我做错了什么。
以下是包含破折号码的电话号码:
//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;
}
这是我无法解决的问题。
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;
}
答案 0 :(得分:2)
您可以使用regex
:
return !!phone.match(/\(\d{3}\)\d{7}/g)
<强>更新强>
由于您忘记了else if
:
else if (i == 4) { // Added the "else" on the left.
答案 1 :(得分:0)
类似的东西(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'));
}
修改强>
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;
}
答案 2 :(得分:0)
使用RegEx检查电话号码肯定是要走的路。这是验证 忽略空格,圆括号和破折号的函数:
check_phone(num) {
return num.replace(/[\s\-\(\)]/g,'').match(/^\+?\d{6,10}$/) != null}
您可以使用第二个正则表达式{6,10}
中的范围来改变要接受的位数。允许领先+
。