【最新】正则表达式:识别手机号码,座机号码,400免费电话

分析

目前常见的电话号码有:手机号码,座机号码,400开头的电话

手机号码

手机号码为11位,第一位一定是1,后面跟着10位号码;
例如:188xxxx6542,157xxxx5231等等。

座机号码

座机号码是由两部分组成:区号+座机号;
区号有3-4位数;
座机号有7-8位数;
例如:010-87655210,028-83387337,0371-6515835

400

400电话为10位号码组成;
例如:400-700-5606

匹配的字符串

content = """
<form id="loginform" οnsubmit="return QMLogin.checkInput();" method="post" name="loginform"target="_self" autocomplete="on"  ><div class="login_submit" style=""><input class="login_button" id="btlogin" name="btlogin" type="submit" value="登录" tabindex="5" /></div></form>
                    <a href="114.aspx?w=小米">小米</a><span>&nbsp;&nbsp;|&nbsp;&nbsp;</span>
                    <a href="114.aspx?w=010-87655210">010-87655210</a><span>&nbsp;&nbsp;|&nbsp;&nbsp;</span>
                    <a href="114.aspx?w=快递">快递</a><span>&nbsp;&nbsp;|&nbsp;&nbsp;</span>
                    <a href="114.aspx?w=18210443800">18210443800</a><span>&nbsp;&nbsp;|&nbsp;&nbsp;</span>
                    <a href="114.aspx?w=深圳">深圳</a><span>&nbsp;&nbsp;|&nbsp;&nbsp;</span>
<a href="tel:400-606-0201" class="text-link-tertiary hover:text-link-tertiary-hover hover:underline active:text-link-tertia
"""

正则表达式

手机号码

正则匹配前后限制非数字,防止随意匹配一长段数字中的部分号码

re_phone = '[^0-9](1[3-9][0-9]{9})[^0-9]'
phone_number_lt = list(set(re.findall(re_phone, content)))
phone_number_lt = [e for e in phone_number_lt if e != '']
座机号码

正则匹配前后限制非数字,防止随意匹配一长段数字中的部分号码

re_phone = '[^0-9](0[0-9]{2,3}\-[2-9][0-9]{6,7})[^0-9]'
phone_number_lt = list(set(re.findall(re_phone, content)))
phone_number_lt = [e for e in phone_number_lt if e != '']
400

正则匹配前后限制非数字,防止随意匹配一长段数字中的部分号码

re_phone = '[^0-9](400-[0-9]{3}-[0-9]{4})[^0-9]'
phone_number_lt = list(set(re.findall(re_phone, content)))
phone_number_lt = [e for e in phone_number_lt if e != '']

总结

将上述三个正则表达式整合到一块

re_phone = '[^0-9](0[0-9]{2,3}\-[2-9][0-9]{6,7}|1[3-9][0-9]{9}|400-[0-9]{3}-[0-9]{4})[^0-9]'
phone_number_lt = list(set(re.findall(re_phone, content)))
phone_number_lt = [e for e in phone_number_lt if e != '']
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值