需要正则表达式为美国电话格式

时间:2011-03-10 14:16:11

标签: c# javascript asp.net regex

我需要一个与美国手机匹配的正则表达式。实际上,在我的页面上我有用于获取输入的文本框,我有正则表达式验证器和正则表达式来验证999-999-9999中的邮政编码。到这里一切都很好。后来我们添加了MaskedEditor扩展器以避免手动添加 - 在电话号码之间。 ClearMaskOnLostFocus也设置为false。因此,每次我们的文本框中都有___-___-____。而且我的验证器现在总是在无效输入中验证它。

所以最后我想说,如果我的手机是有效的美国手机并且还通过了___-___-____,我需要一个匹配的正则表达式,而不是它会破坏的那两个......

[现有正则表达式]

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

4 个答案:

答案 0 :(得分:2)

在Javascript中 - 这里:

  /^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/;  

它来自谷歌...... http://www.zparacha.com/phone_number_regex/

这是一部分:

/^      = match must start with - no chars before
\(?     = optional left brace
(\d{3}) = 3 digits
\)?     = optional right brace
[- ]?   = optional hyphen or space
(\d{3}) = 3 digits
[- ]?   = optional hyphen or space
(\d{4}) = 4 digits
$/      = match must end here - no chars after

答案 1 :(得分:1)

只需使用以下内容:

(<your current regex>)|(___-___-____)

答案 2 :(得分:0)

尝试查看libphonenumber的灵感或用途。它有你需要的大部分内容。

答案 3 :(得分:0)

PhoneFormat.com有一个javascript库,无论你拥有什么样的格式,都可以使用你输入的任何数字,并正确格式化它。如果您通过___-___-____999-999-9999,它会处理它。