用于验证电话号码的正则表达式失败

时间:2013-02-22 11:49:28

标签: javascript regex

我正在尝试使用regex的以下格式验证电话号码。但它在某些条件下失败了。

电话号码:

2323232
0112323232
011-2323232
+91-9898989898
98989898998

我为上述数字写了regex

^[+]?(\d{2,4}-)?(\d{7,11})

测试了它here

我在以下代码段中使用过:

var phonePattern = /^[+]?(\d{2,4}-)?(\d{7,11})/;
if(!(phonePattern.test(formData.phone))){
    $('#errorList').append('<li>Invalid Phone Number</li>');
    error = 1;
}

正则表达式适用于我需要的电话号码,但对formData.phone = '011-2323232asdasd'也是如此。我是regex的新用户及其在javascript中的用法。我怎样才能使它工作?请指教。

5 个答案:

答案 0 :(得分:1)

在正则表达式的末尾添加$^[+]?(\d{2,4}-)?(\d{7,11})$

这意味着'文本结束/行',所以你的正则表达式只需要数字直到字符串结尾。

答案 1 :(得分:1)

你需要把锚点放在两个两端(比如^<a-regex-goes-here>$,否则它会在比赛后留下垃圾。

答案 2 :(得分:0)

您需要在代码中添加“end with($)”运算符。

/^[+]?(\d{2,4}-)?(\d{7,11})$/

你可能想看看这个 http://www.regular-expressions.info/javascript.html

答案 3 :(得分:0)

试试这个正则表达式/^((\+91)?-?[0\+\(]*\d{2,3}[-\s\)]*\.?\d{3,4}[-\s]*\.?[0-9]{4})$/这适用于所有类型的有效电话号码。

对于以下条件,返回true:

1. Just 10 digits
2. +00 0000 0000
3. +1 000 000 000
4. (3 digits)<space>(3 digits)<space>4 digits
5. (3 digits) - 3 digits - 4 digits
6. +91-9898989898

还有很多..

答案 4 :(得分:0)

我认为你最终错过了$。 使用:

^[+]?(\d{2,4}-)?(\d{7,11})$