本文介绍了正则表达式验证美国电话号码?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试写一个正则表达式来验证美国电话号码格式
(123)123-1234 - 真
123-123-1234 - 真

I'm trying to write a regular expression to validate US phone number of format (123)123-1234 -- true 123-123-1234 -- true

其他所有的东西都无效。

every thing else in not valid.

我想出的东西像

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

但是这个验证,
123)-123-1234
(123-123-1234

But this validates, 123)-123-1234(123-123-1234

这是不对的。

推荐答案

最简单的匹配方式两个

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

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

是使用交替(... | ...)):将它们指定为两个主要分开的选项:

is to use alternation ((...|...)): specify them as two mostly-separate options:

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

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

By the way, when Americans put the area code in parentheses, we actually put a space after that; for example, I'd write (123) 123-1234, not (123)123-1234. So you might want to write:

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

(虽然最好明确说明您希望电话号码所在的格式。)

(Though it's probably best to explicitly demonstrate the format that you expect phone numbers to be in.)

这篇关于正则表达式验证美国电话号码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-28 04:17