美国/加拿大长途电话号码的正则表达式测试?

时间:2014-01-09 20:22:24

标签: javascript regex

所以我有这个正则表达式测试器:

/^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/.test(value);

适用于以下情况:

123-456-7890
123 456-7890
123-456 7890
(123)-456-7890
123 456 7890

但是,如果为美国/加拿大境内的长途电话号码添加+1,则完全失败:

+1 123-456-7890
1 123-456-7890
11234567890
+1 (123)-456-7890
1 123 456 7890

如何添加这些案例?

2 个答案:

答案 0 :(得分:2)

我会尝试一下:

/^(\+?1 ?)?\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/.test(value);

我在(\+?1 ?)?

前加上你的正则表达式

答案 1 :(得分:0)

我强烈建议您使用库进行此类测试,到目前为止我发现的最好的是google的libphonenumber(提供各种语言,包括javascript)。如果使用整个库不是您的替代方案,您可以随时查看源代码以找到加拿大数字的正确正则数(here元数据的来源)

相关问题