Javascript电话号码验证括号符号

Javascript Phone number validation Paratheses sign

我进行了一些搜索,然后其他人问了这个问题和答案,但似乎没有一个适合我的尝试。基本上,我正在对接受(123)4567890作为条目的电话条目进行验证。我已经实现了一个接受简单数字字符串(例如1234567890)和带破折号123-456-7890的字符串。我知道我在犯一个简单的错误,但我不知道自己在做什么错。

这是可以使用破折号的电话号码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//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;
}a€?

这是我无法解决的问题。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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;
}a€?


您可以使用regex轻松完成此操作:

1
return !!phone.match(/\\(\\d{3}\\)\\d{7}/g)

实时演示

更新:

由于忘记了else if

,因此您无法使用的代码

1
    else if (i == 4) { // Added the"else" on the left.


使用RegEx检查电话号码当然是可行的方法。这是验证
忽略空格,括号和破折号的函数:

1
2
check_phone(num) {
   return num.replace(/[\\s\\-\\(\\)]/g,'').match(/^\\+?\\d{6,10}$/) != null}

您可以使用第二个正则表达式{6,10}中的范围来改变要接受的位数。允许前导+


这样的事情(一个RegExp规则)可以确保它与任一规则匹配。

1
2
3
4
5
6
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'));
}

编辑:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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;
}