首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式仅匹配电话号码,而不匹配日期

正则表达式仅匹配电话号码,而不匹配日期
EN

Stack Overflow用户
提问于 2018-01-05 20:39:20
回答 2查看 344关注 0票数 1

我的正则表达式:https://regex101.com/r/wM0oy1/2/

代码语言:javascript
复制
/(((?!(([1-9]|0[1-9]|[12][0-9]|3[01])\.([1-9]|0[1-9]|1[012])\.(19|20)\d\d)))
(\+?[0-9][0-9()-s+\s]{5,20}[0-9]))/

我只想让它匹配电话号码,但自动取款机我不让它工作,这是我认为可以工作,但我只得到一个匹配

测试22.13.2018 <--不想在日期匹配

测试09234343 <--想要匹配电话号码

测试0171 443 343 433 <--想要匹配电话号码

Test 0943 34445 <--想要匹配电话号码

测试+49(0)94234 3434 34 <--想要匹配电话号码

测试09743/1443 <--电话号码不匹配

测试02.12.2017 <--不想在日期匹配

测试2017 <--不想在日期匹配

我基本上想排除日期。

我希望这只匹配电话枚举号码,而不是日期

代码语言:javascript
复制
\+?[0-9][0-9()-s+\s]{5,20}[0-9]

并将此模式作为异常接受

代码语言:javascript
复制
(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[012])\.(19|20)\d\d
EN

回答 2

Stack Overflow用户

发布于 2018-01-05 20:42:33

你可以在php中使用内置的checkdate函数来检查它是否是一个有效的日期。

票数 0
EN

Stack Overflow用户

发布于 2020-08-08 04:10:40

使用跳过-失败:

代码语言:javascript
复制
(?:0?[1-9]|[12][0-9]|3[01])\.(?:0?[1-9]|1[012])\.(?:19|20)\d\d(*SKIP)(*F)|\+?[0-9][0-9()-s+\s]{5,20}[0-9]

请参阅proof

一旦匹配了(?:0?[1-9]|[12][0-9]|3[01])\.(?:0?[1-9]|1[012])\.(?:19|20)\d\d,跳过失败运算符将忽略匹配,并且\+?[0-9][0-9()-s+\s]{5,20}[0-9]将永远不会匹配日期子字符串。

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

https://stackoverflow.com/questions/48113828

复制
相关文章

相似问题

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