我想编写一个正则表达式,使它可以验证可编写如下的电话号码:237 698888888或+237 658888888或67883888 ...,实际上,电话号码必须符合以下条件(+237 | 237)'空格'(6 | 2)(5 | 8 | 2 | 3 | 9 | 7 | 6)[0-9] {7}

如果用户打算输入带有前缀的数字,则在这种情况下,前缀必须为237或+237,否则,他决定输入不带前缀的数字,在这种情况下,他必须输入9位数字,第一位必须为6或2。第二个数字必须在2,3,5,6,7,8和9之间;剩下的7个数字可供选择,即[0-9] {7}。这是我的Java代码:

String regex = "(\\+237|237)\" \"(6|2)(2|3|[5-9])[0-9]{7}";
String sPhoneNumber = "237 278889999";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(sPhoneNumber);
if (matcher.matches()) {
    Log.e("|==FILTER_NUM==>>","Phone Number Valid");
}
else
{
    Log.e("|==FILTER_NUM==>>","Phone Number must be in the form XXX XXXXXXXX");
}


返回此


  E / | == FILTER_NUM == >>:电话号码的格式必须为XXX XXXXXXXX


请检查我的代码并告诉我怎么了

请原谅我的英语:)

最佳答案

您的正则表达式

(\\+237|237)\" \"(6|2)(2|3|[5-9])[0-9]{7}


您正在其中使用空格。请使用\\s来检测一个空格。

你也可以简化这个

\\+237|237




\\+?(237)


最终的正则表达式看起来像

(\\+?(237))\\s(6|2)(2|3|[5-9])[0-9]{7}

关于java - Java中的正则表达式无法验证电话号码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45879766/

10-10 10:18