首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法用正则表达式排除以11结尾的3位数字?

有没有办法用正则表达式排除以11结尾的3位数字?
EN

Stack Overflow用户
提问于 2020-03-31 18:20:28
回答 3查看 389关注 0票数 0

我试图验证电话号码区号(北美),检查该号码是否以1或0开头。此外,该数字不应包括这样的保留数字(即不包括以11结尾的所有内容)。

  • 这些是有效的区号: 414,608,920,319,715。
  • 这些建议无效: 023,123,411,611,811,911

我试过几件事,但还是没有运气。我不太擅长regex。这是我的最新尝试

代码语言:javascript
复制
\b([2-9](?!11)|[2-9][0-9]{2})\b
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-03-31 18:41:12

您的尝试非常接近,您不需要匹配条件下的“任一”表达式,只是一个负的前瞻性,如果它看到字符串,就会停止匹配。下面是一些工作正则表达式的示例:

代码语言:javascript
复制
([2-9](?!11)[0-9]{2})

你可以试试这里

票数 2
EN

Stack Overflow用户

发布于 2020-03-31 18:47:50

无负目镜的解决方案:

代码语言:javascript
复制
([2-9][02-9][0-9]|[2-9][0-9][02-9])
票数 1
EN

Stack Overflow用户

发布于 2020-03-31 18:50:25

这应该可以根据需要工作,包括0和1洞。

代码语言:javascript
复制
        String pat = "[2-9]\\d{2}(?<!11)";
        String[] data = {"123","001","212", "321", "449","811", "121", "111", "911", "099"};
        for (String s : data ) {    
            System.out.println(s + " " + (s.matches(pat) ? "valid" : "invalid" ));
        }

打印

代码语言:javascript
复制
123 invalid
001 invalid
212 valid
321 valid
449 valid
811 invalid
121 invalid
111 invalid
911 invalid
099 invalid
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60957317

复制
相关文章

相似问题

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