由于工作需求,在一段字符串里过一遍正则,有手机号的字符串留下,没有的作为脏数据。
样本如下:(样本只保留电话号码部分)
联系电话130 4604 0541 2018-06-11 12:07:02
联系电话:????️ 152-8922-1868 2018-06-11 08:25:03
1570349283815703492178
联系18603491880 2018-05-25 12:49:11
+86 150 9411 5452
1800 12345 66
1509 122 5155
150 9122 515515591243345
1539257211115303570500
1757784 5454
1536 554 9965
各种谷歌各种百度,都没有现成的能解决问题的正则表达式。
经过不懈努力查资料,现在完成完美匹配!
可以分段匹配,混合匹配,收尾连接的两个手机号匹配
完美匹配正则代码如下:
(13[0-9]|14[1579]|15[0-3,5-9]|16[2567]|17[0-9]|18[0-9]|19[01256789])((([\ ]{0,2}\d{4}[\ ]{0,2}\d{4})|([\-]{0,2}\d{4}[\-]{0,2}\d{4}))|((\d{1}[\ ]{0,2}\d{3}[\ ]{0,2}\d{4})|(\d{1}[\-]{0,2}\d{3}[\-]{0,2}\d{4}))|((\d{1}[\ ]{0,2}\d{5}[\ ]{0,2}\d{2})|(\d{1}[\-]{0,2}\d{5}[\-]{0,2}\d{2})))
python3代码如下: