首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中验证电话号码的Regex不工作。

在java中验证电话号码的Regex不工作。
EN

Stack Overflow用户
提问于 2017-08-25 10:51:52
回答 3查看 186关注 0票数 1

我想写一个正则表达式,它允许验证一个电话号码如下: 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代码:

代码语言:javascript
复制
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格式

请检查我的密码,告诉我出了什么问题

请原谅我的英语:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-25 11:30:42

你的审判官

代码语言:javascript
复制
(\\+237|237)\" \"(6|2)(2|3|[5-9])[0-9]{7}

你在里面用了一个空格。使用\\s来检测一个空格。

另外,你也可以简化这个

代码语言:javascript
复制
\\+237|237

代码语言:javascript
复制
\\+?(237)

最终的regex看起来就像

代码语言:javascript
复制
(\\+?(237))\\s(6|2)(2|3|[5-9])[0-9]{7}
票数 0
EN

Stack Overflow用户

发布于 2017-08-25 11:48:38

正则表达式正在搜索文字引号("),这将导致匹配失败。此外,由于前缀是可选的,因此需要使用?在表达式的前缀部分后面指明这一点。

以下正则表达式应与所有示例电话号码相匹配:

代码语言:javascript
复制
String regex = "(?:\\+?237 )?[26][235-9]\\d{7}";
票数 0
EN

Stack Overflow用户

发布于 2017-08-25 11:48:44

(+237-237) 620-9{7}是可以参考javaRegularExpressions的更多详细信息的表达式。这是表达式以上代码测试的在线测试。对于空间,只要使用空间,它也将匹配空间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45879766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档