所以我有这个正则表达式测试器:
/^\(?([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
如何添加这些案例?
答案 0 :(得分:2)
我会尝试一下:
/^(\+?1 ?)?\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/.test(value);
我在(\+?1 ?)?
答案 1 :(得分:0)
我强烈建议您使用库进行此类测试,到目前为止我发现的最好的是google的libphonenumber(提供各种语言,包括javascript)。如果使用整个库不是您的替代方案,您可以随时查看源代码以找到加拿大数字的正确正则数(here元数据的来源)