需要Regex修复电话号码

时间:2014-01-24 22:42:01

标签: javascript regex

我有正则表达式允许这些格式

正则表达式:

/^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}$/

格式:

(123) 456-7890
123-456-7890
123.456.7890
1234567890

我想让它允许7位数或7位以上。目前它允许10个数字不小于或等于。 请帮忙!

3 个答案:

答案 0 :(得分:1)

不要打扰这样的困难电话号码 - 如果你只是想检查,为什么不走简单路线并更换任何不是数字的东西,然后检查字符串的长度?

var telephoneNumber = '(123) 456-7890';

telephoneNumber = telephoneNumber.replace(/[^\d]+/g, '');
if (telephoneNumber.length >= 7) {
    console.log('Everything is OK! The number is: ' + telephoneNumber);
    //Everything is OK! The number is: 1234567890
} else {
    console.log('Something went wrong!');
}

这也符合123-abc-456-7890,但会“正确理解”。

答案 1 :(得分:0)

试试这个:

^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{1,5}$

它将检查您是否至少有7个号码(最多11个)。你想允许多少个号码?

答案 2 :(得分:0)

没有正则表达式来匹配多个国家/地区的电话号码,这听起来像你需要的。相信我,我已经尝试过了。

如上所述,只需允许用户输入任何内容并删除任何不是数字的内容,然后再将其保存到数据库中。这样,当您在2年内重新设计应用程序并且设计师说“我想要小数而不是破折号”时,您不必去处理数据库 - 您只需调整表示层。

这样的事情可能适合你:

/^(?:[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}|[0-9]{3}[-\s\.]{0,1}[0-9]{4})$/

匹配以下内容:

1234567
123 4567
123.4567
123-1234
1234567890个
123 456 7890
123.456.7890
123-456-7890

......但不是这样:

(123)1234