可能重复:
美国电话号码验证
我需要验证美国的电话号码。 这可能是格式为:
xxx-xxx-xxxx
(xxx) xxx xxxx
(xxx)-xxx-xxxx
xxxxxxxxxx
但它不应该是
xxx-xxx-xxxx-
-xxx-xxx-xxxx
它应该接受数字,连字符,空间和括号。
目前我使用
^\[0-9 \-\. ]+$
这不验证的开始或结束冲刺。
可能重复:
美国电话号码验证
我需要验证美国的电话号码。 这可能是格式为:
xxx-xxx-xxxx
(xxx) xxx xxxx
(xxx)-xxx-xxxx
xxxxxxxxxx
但它不应该是
xxx-xxx-xxxx-
-xxx-xxx-xxxx
它应该接受数字,连字符,空间和括号。
目前我使用
^\[0-9 \-\. ]+$
这不验证的开始或结束冲刺。
^\(?\d{3}\)?[- ]?\d{3}[- ]?\d{4}$
那么我的想法是(经过一番搜索)不是新的了! 看这个:
一个全面的正则表达式的电话号码验证
这是BTW一个很好的建议。
这一个是可能是正确的(假设这取决于你所使用的正则表达式引擎做了一些分析错误。这也是丑陋的地狱:(。
(?:\d{3}(?:\d{7}|\-\d{3}\-\d{4}))|(?:\(\d{3}\)(?:\-\d{3}\-)|(?: \d{3} )\d{4})
(^\(?[0-9]{3}\)?\-?\s?[0-9]{3}\-?\s?[0-9]{4}[^-])
我测试了这个在http://regexhero.net/tester/ ,得到它选择以下方式:
xxx-xxx-xxxx
(xxx) xxx xxxx
(xxx)-xxx-xxxx
xxxxxxxxxx
它忽视了以下模式:
xxx-xxx-xxxx-
-xxx-xxx-xxxx
我希望这可以帮助,或者至少你移动在正确的方向。
这应该做的伎俩:
/^([\d]{6}|((\([\d]{3}\)|[\d]{3})( [\d]{3} |-[\d]{3}-)))[\d]{4}$/
xxxxxx
, (xxx)
或只是xxx
xxx
或-xxx-
xxxx