我的正则表达式: https://regex101.com/r/wM0oy1/2/
/(((?!(([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]))/
我只想要它匹配电话号码,但是atm我不能让它工作,这是我认为会起作用但我只得到1场比赛
测试22.13.2018< - 不希望日期匹配
测试09234343< - 希望在电话号码上匹配
测试0171 443 343 433< - 希望在电话号码上匹配
测试0943 34445< - 希望在电话号码上匹配
测试+49(0)94234 3434 34< - 希望在电话号码上匹配
测试09743/1443< - 不匹配电话号码
测试02.12.2017< - 不希望日期匹配
2017年测试< - 不希望日期匹配
我基本上想排除日期。
我希望这只匹配phonenumbers而不是日期
\+?[0-9][0-9()-s+\s]{5,20}[0-9]
并接受此模式作为例外
(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[012])\.(19|20)\d\d
答案 0 :(得分:1)
使用跳过失败:
(?: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
被匹配,SKIP-FAIL运算符将省略匹配,而\+?[0-9][0-9()-s+\s]{5,20}[0-9]
将永远不会匹配日期子字符串。
答案 1 :(得分:0)
您可以在php中使用内置函数checkdate并检查它是否是有效日期。