Regular expression to validate US phone numbers?
Possible Duplicate:
A comprehensive regex for phone number validation
Validate phone number with JavaScript
我正在尝试编写正则表达式来验证美国电话号码格式
(123)123-1234 - 是的
123-123-1234 - 是的
其他一切都无效。
我想出了类似的东西
1
| ^\(?([0-9]{3}\)?[-]([0-9]{3})[-]([0-9]{4})$ |
但这验证了,
123)-123-1234
(123-123-1234
这是不对的。
-
我认为让人们以他们想要的方式输入他们的电话号码会更友好。 只需删除非数字,然后坚持留下10位数字。
-
这可能是重复的,但请在标记帖子之前链接到之前的答案。
匹配两者的最简单方法
1
| ^\([0-9]{3}\)[0-9]{3}-[0-9]{4}$ |
和
1
| ^[0-9]{3}-[0-9]{3}-[0-9]{4}$ |
是使用交替((...|...)):将它们指定为两个主要分开的选项:
1
| ^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$ |
顺便说一下,当美国人把区号放在括号中时,我们实际上在那之后放了一个空格; 例如,我写(123) 123-1234,而不是(123)123-1234。 所以你可能想写:
1
| ^(\([0-9]{3}\) |[0-9]{3}-)[0-9]{3}-[0-9]{4}$ |
(尽管最好明确说明您希望电话号码所在的格式。)
-
上述表达式为(000)000-0000的成功如何避免?
-
@HaBo:我们为什么要避免这种情况?
-
因为它不是有效的电话号码。
-
@HaBo:正则表达式无法检测有效的电话号码,只能检测有效格式的电话号码。也就是说,没有美国区号以0或1开头,所以如果您愿意,可以将初始[0-9]{3}更改为[2-9][0-9][0-9]。
-
是的我正在寻找这样的事情。所以^(( [2-9] {1} [0-9] {2}) | [0-9] {3} - )[0-9] {3} - [0 -9] {4} $适用于(200)000-0000
-
这对我不起作用。这对我有用:1? W *([2-9] [0-8] [0-9]) W *([2-9] [0-9] {2}) W * ([0-9] {4})(本身?X?吨?( d *))?
-
我最终得到了^\([2-9]{3}\)\s?[0-9]{3}-[0-9]{4}$
-
@joaquin:你这里犯了一个错误!区号的3位数字中没有一个能够包含0或1,这意味着所有洛杉矶和所有纽约市都将被拒绝! (310和212)
-
美国电话号码有更多的验证,就像它不会开始0不能全部0我认为这对于美国电话更加健壮 D *([2-9] d {2})( D *)([ 2-9] d {2})( d *)( d {4}) d *