可能是重复问题:
一个全面的用于验证电话号码的正则表达式
使用JavaScript验证电话号码
我想编写一个正则表达式来验证格式为 (123)123-1234 或 123-123-1234 的美国电话号码,这两种格式都是合法的。
其他任何形式都是无效的。
我已经想出了以下正则表达式:
^\(?([0-9]{3}\)?[-]([0-9]{3})[-]([0-9]{4})$
但是这个是合法的, 123)-123-1234 (123-123-1234
这是不正确的。
可能是重复问题:
一个全面的用于验证电话号码的正则表达式
使用JavaScript验证电话号码
我想编写一个正则表达式来验证格式为 (123)123-1234 或 123-123-1234 的美国电话号码,这两种格式都是合法的。
其他任何形式都是无效的。
我已经想出了以下正则表达式:
^\(?([0-9]{3}\)?[-]([0-9]{3})[-]([0-9]{4})$
但是这个是合法的, 123)-123-1234 (123-123-1234
这是不正确的。
匹配两者的最简单方法
^\([0-9]{3}\)[0-9]{3}-[0-9]{4}$
和
^[0-9]{3}-[0-9]{3}-[0-9]{4}$
使用alternation((...|...)
):将它们指定为两个大部分分开的选项:
^(\([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}$
(尽管最好明确地展示您期望的电话号码格式。)