2

我遇到了一个正则表达式问题:我试图强制使用以“00”或“+”开头的电话号码,但我的尝试不起作用。

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

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

4

2 回答 2

3

在字符类中,每个字符都按字面意思匹配,这意味着[(00)|(+)]将匹配一个0 or + or | or ( or )

使用这个正则表达式:

 String PHONE_PATTERN = "^(?:00|\\+)[0-9\\s.\\/-]{6,20}$";
于 2013-10-21T13:42:10.587 回答
1

如果您从号码中删除了空格、连字符和其他任何内容,并且您想捕获 +xxnnnnnnnn 或 00xxnnnnnnnn 其中 xx 是国家代码当然,n 是 9 位数字或 0nnnnnnnnn 其中以零开头的非国际号码是后跟 9 位数字,然后试试这个正则表达式

 String PHONE_PATTERN = "^(?:(?:00|\+)\d{2}|0)[1-9](?:\d{8})$"
于 2018-03-12T16:10:33.020 回答