我想写一个正则表达式,它允许验证一个电话号码如下: 237 698888888或+237 658888888或67883888 .实际上,电话号码必须符合以下条件(+237-237)‘空格’(6收-2)(5--8-2
如果用户有意输入一个带有前缀的数字,则前缀必须为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");
}返回此
电话号码必须是XXX XXXXXXXX格式
请检查我的密码,告诉我出了什么问题
请原谅我的英语:)
发布于 2017-08-25 11:30:42
你的审判官
(\\+237|237)\" \"(6|2)(2|3|[5-9])[0-9]{7}你在里面用了一个空格。使用\\s来检测一个空格。
另外,你也可以简化这个
\\+237|237至
\\+?(237)最终的regex看起来就像
(\\+?(237))\\s(6|2)(2|3|[5-9])[0-9]{7}发布于 2017-08-25 11:48:38
正则表达式正在搜索文字引号("),这将导致匹配失败。此外,由于前缀是可选的,因此需要使用?在表达式的前缀部分后面指明这一点。
以下正则表达式应与所有示例电话号码相匹配:
String regex = "(?:\\+?237 )?[26][235-9]\\d{7}";发布于 2017-08-25 11:48:44
(+237-237) 620-9{7}是可以参考javaRegularExpressions的更多详细信息的表达式。这是表达式以上代码测试的在线测试。对于空间,只要使用空间,它也将匹配空间。
https://stackoverflow.com/questions/45879766
复制相似问题