Java正则表达式-电话号码验证

Java正则表达式-电话号码验证,java,regex,Java,Regex,我是java正则表达式的新手。我必须使用java正则表达式验证电话号码。 我尝试了一些组合,这是迄今为止最好的结果: ^\s*(?:\+?(011))?[-. (]*?(1|32)?[-. (]*(703|701|21)?[-. )]*(\d{3})?[-. ]*(\d{4})?\s*$ 可接受的输入: 1. #### 2. (###)###-#### 3. ###-#### 4. +#(###)###-#### 5. #####.##### 不可接受的输入:  其中

我是java正则表达式的新手。我必须使用java正则表达式验证电话号码。 我尝试了一些组合,这是迄今为止最好的结果:

^\s*(?:\+?(011))?[-. (]*?(1|32)?[-. (]*(703|701|21)?[-. )]*(\d{3})?[-. ]*(\d{4})?\s*$ 
可接受的输入:

 1.  ####
 2.  (###)###-#### 
 3.  ###-####
 4. +#(###)###-####
 5.  #####.#####
不可接受的输入: 

其中#突出显示数字/数字


提前感谢。

您基本上有两种可能性。或者您可以找到一个适合您需要但可能无法读取和维护的因式分解正则表达式,或者您可以选择一个更长的正则表达式,它精确地表达您的每种情况

第二种方法非常容易编写和维护。让我们先看两个可接受的输入。可通过以下方式对其进行说明:

正则表达式是使用切换案例方法编写的:
(\d{5}{124;\(\ d{3}\)\d{3}-\d{4})
,其中字符管道(
)充当案例之间的分隔符。因此,您可以指定所需输入的确切语法

插图是在上生成的,在处理正则表达式时,我强烈推荐使用该工具

正如您的问题所提到的Java,在Java中检查正则表达式是很简单的,这要感谢
方法匹配
字符串的任何实例

boolean matched = "(703)111-2121".matches("(\\d{5}|\\(\\d{3}\\)\\d{3}-\\d{4})")

正如您所看到的,您必须思考如何在代码中看到反斜杠

非常感谢,先生。这个链接非常有益。谢谢你,我一下子就明白了这个概念:)
boolean matched = "(703)111-2121".matches("(\\d{5}|\\(\\d{3}\\)\\d{3}-\\d{4})")