正则表达式来验证美国电话号码?

问题描述:

可能重复:
A comprehensive regex for phone number validation
Validate phone number with JavaScript正则表达式来验证美国电话号码?

我想写一个正则表达式来验证美国格式 (123)123-1234的手机号码 - 真 123-123-1234 - true

其他所有东西都无效。

我想出了类似

^\(?([0-9]{3}\)?[-]([0-9]{3})[-]([0-9]{4})$ 

但这种验证, 123)-123-1234 (123-123-1234

这是不正确的。

+9

我觉得这是一个很大友好,让人们在手机类型以他们想要的方式编号。只需剥离非数字,然后坚持10个数字。 – Pointy 2012-03-19 19:14:22

+0

这可能是重复的,但请在标记帖子之前链接到以前的答案。 – mindtonic 2015-03-24 12:23:19

最简单的方法以匹配两者

^\([0-9]{3}\)[0-9]{3}-[0-9]{4}$ 

^[0-9]{3}-[0-9]{3}-[0-9]{4}$ 

是使用交替(...|...)):指定它们作为两个主要-不同的选项:

^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$ 

顺便说一句,当美国人把括号中的区号,我们实际上把那之后的空间;例如,我会写(123) 123-1234,而不是(123)123-1234。所以,你可能想要写:

^(\([0-9]{3}\) |[0-9]{3}-)[0-9]{3}-[0-9]{4}$ 

(虽然它可能是最好明确表明你希望的电话号码是在格式。)

+0

上面的表达式给出了(000)000-0000的成功,我们如何避免这种情况? – HaBo 2013-11-26 21:29:19

+2

@HaBo:我们为什么要避免这种情况? – ruakh 2013-11-26 21:33:54

+4

,因为它不是有效的电话号码。 – HaBo 2013-11-26 21:37:25