我想编写一个正则表达式,使它可以验证可编写如下的电话号码: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/