Regex验证电话号码失败



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

电话号码:

2323232
0112323232
011-2323232
+91-9898989898
98989898998

我为上面提到的数字写了这个regex

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

在这里测试。

我使用了以下代码段:

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'也返回true。我不熟悉regex及其在javascript中的用法。我怎样才能让它工作?请提供建议。

您需要在两端放置锚点(如^<a-regex-goes-here>$,否则比赛结束后会出现垃圾。

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

它的意思是"文本/行的末尾",所以您的regexp需要在字符串末尾之前只有数字。

您需要在代码中添加一个"end with($)"运算符。

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

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

试试这个正则表达式/^((+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

还有更多。。

我想你最后错过了一个$。用途:

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

最新更新