正则表达式表示国内常见手机号码
国内常见手机号段:
- 电信号段:133/150/180/181/189/177
- 联通号段:130/131/132/155/156/185/186/145/176
- 移动号段:134/135/136/137/138/139/150/152/152/157/158/159/182/183/184/187/188/147/178
- 根据手机号码的特点,我们可以发现,所有的手机号码是以1开始,总的位数是11位,
- 第二位数有3,5,8,4,7,第三位数有3,0,1,2,4,5,6,,7,8,9,0,重新排序后,
- 第二位数有3,4,5,7,8,第三位数0到9,也就是所有数字都有用到
- 根据以上规则,我们可以得到以下的正则规则,代码演示:
import re
s1='wo ai ni ,nibu zai wo13322299223'
'我去14324565943 ewrwe,,'
' 11344335632q'
'iiiwo13559923456'
'ewrw14333333333ewr'
pat=r'(?#表示,以数字1开始,第二位数字可以是 3,4,7,8,9,第一第二位定了后剩余就个数字,九个数字任意都可以
#连续的11位数字,r表示忽略转义字符,否则匹配不到,或者字符串必须是''' '''这样的字符串
#本例中是单引号,所以必须忽略转义字符
phoneNm=re.compile(pat,re.S).findall(s1)
#re.S表示跨行匹配,re.compile表示正则的compile引擎
print(phoneNm)
#打印结果,结果为一个列表。