Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以';开头的电话号码的正则表达式;00';或'+';_Java_Regex - Fatal编程技术网

Java 以';开头的电话号码的正则表达式;00';或'+';

Java 以';开头的电话号码的正则表达式;00';或'+';,java,regex,Java,Regex,我遇到了一个正则表达式问题:我试图强制输入一个以“00”或“+”开头的电话号码,但我的尝试无效 String PHONE_PATTERN = "^[(00)|(+)]{1}[0-9\\s.\\/-]{6,20}$"; 它仍然允许例如“0123-45678”。我做错了什么?在character类中,每个字符都是逐字匹配的,这意味着[(00)|(+)]将匹配0或+或|或(或) 使用此正则表达式: String PHONE_PATTERN = "^(?:00|\\+)[0-9\\s.\\/-]{6

我遇到了一个正则表达式问题:我试图强制输入一个以“00”或“+”开头的电话号码,但我的尝试无效

String PHONE_PATTERN = "^[(00)|(+)]{1}[0-9\\s.\\/-]{6,20}$";

它仍然允许例如“0123-45678”。我做错了什么?

在character类中,每个字符都是逐字匹配的,这意味着
[(00)|(+)]
将匹配
0或+或|或(或)

使用此正则表达式:

 String PHONE_PATTERN = "^(?:00|\\+)[0-9\\s.\\/-]{6,20}$";

如果您从数字中删除了空格、连字符等,并且希望捕获+xxnnnnnn或00xxnnnnnnnn,其中xx当然是国家代码,n是9位数字,或者0nnnnnnn,其中以零开头的非国际数字后跟9位数字,请尝试此正则表达式

 String PHONE_PATTERN = "^(?:(?:00|\+)\d{2}|0)[1-9](?:\d{8})$"

检查您的字符类。为什么将
(00)|(+)
括在括号中?为什么没有括号00'似乎是一个子表达式,不是吗@PeterRader,验证的“+”部分工作正常,但它仍然允许在开始时使用一个零。这个问题与JSF.works无关!非常感谢你!