首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >委内瑞拉电话号码的正则表达式与预期不匹配

委内瑞拉电话号码的正则表达式与预期不匹配
EN

Stack Overflow用户
提问于 2014-09-09 13:45:45
回答 1查看 224关注 0票数 1

我有两个RegEx:

代码语言:javascript
复制
Local Numbers: /^0058|\+58(?:2(?:12|4[0-9]|5[1-9]|6[0-9]|7[0-8]|8[1-35-8]|9[1-5]|3[45789]))\d{7}$/
Mobile Numbers: /^0058|\+58(?:4(?:1[246]|2[46]))\d{7}$/

这个想法是为了验证委内瑞拉的电话号码,为国家添加前缀。现在,这样的值是有效的:

代码语言:javascript
复制
00584129999999
04129999999
04249999999
00584249999999
02129999999
00582129999999  

但价值观是这样的:

代码语言:javascript
复制
+584129999999
+582129999999

不是。我找不到我犯错误的地方,所以有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-09 13:48:08

替换运算符|的范围比您想象的要大。您的第一个正则表达式分离为

代码语言:javascript
复制
^0058
|
\+58(?:2(?:12|4[0-9]|5[1-9]|6[0-9]|7[0-8]|8[1-35-8]|9[1-5]|3[45789]))\d{7}$

此外,您还应该允许一个0 (而不是强制执行+580058 )。

你可能想要的东西

代码语言:javascript
复制
^(?:(?:00|\+)58|0)(?:2(?:12|4[0-9]|5[1-9]|6[0-9]|7[0-8]|8[1-35-8]|9[1-5]|3[45789]))\d{7}$

如果你想把两个雷克斯合并成一个,没问题:

代码语言:javascript
复制
^(?:(?:00|\+)58|0)(?:2(?:12|4[0-9]|5[1-9]|6[0-9]|7[0-8]|8[1-35-8]|9[1-5]|3[45789])|4(?:1[246]|2[46]))\d{7}$

测试它在regex101.com上直播

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

https://stackoverflow.com/questions/25746304

复制
相关文章

相似问题

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