前言:在使用python开发中,有时候经常需要对一些常用的字段进行匹配校验;例如:邮箱、手机号、身份证号、域名、邮编、空格处理等等,这个用re模块的正则表达式就可以很好校验出来;
本篇教程就来说说常用6种正则表达式表示方法
环境:Python3、sublime text3
1、Email地址
1)说明:在网站注册页面上常常会出现输入用户名、密码及Email等,当输入的邮箱不含“@”符号,网页就会提示输入Email地址错误,这个处理过程其实就是一个正则表达式的处理,下面是我们对这些特殊需求的表达式进行总结:
2)使用方法:^w+([-+.]w+)*@w+[-.]w+*.w+([-.]w+)*$
import rex="zhangsan@gmail.com"y="zhangsangmail.com"z="zhangsangmail"xr=re.match('^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$',x)print('匹配正确:',xr.group())yr=re.match('^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$',y)print('匹配不正确:',yr.group())zr=re.match('^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$',z)print('匹配不正确:',zr.group())
2、域名
1)说明:我们经常看到的域名是baidu.com,csdn.net,10086.cn等就是所谓的域名
2)使用方法:'(?i)^([a-z0-9]+(-[a-z0-9]+)*.)+[a-z]{2,}$
import rex="www.baidu.com"y="www.csdn.net"z="www.10086.cn"t="aabbcc.d"xr=re.match('(?i)^([a-z0-9]+(-[a-z0-9]+)*.)+[a-z]{2,}$',x)print('匹配正确:',xr.group())yr=re.match('(?i)^([a-z0-9]+(-[a-z0-9]+)*.)+[a-z]{2,}',y)print('匹配正确:',yr.group())zr=re.match('(?i)^([a-z0-9]+(-[a-z0-9]+)*.)+[a-z]{2,}$',z)print('匹配正确:',zr.group())tr=re.match('(?i)^([a-z0-9]+(-[a-z0-9]+)*.)+[a-z]{2,}$',t)print('匹配正确:',tr.group())
3、手机号码
1)说明:中国的手机号码为11位,并且一般是以12、14、15、17、18等开头,因此可以确定的是开头为1,第二位为3,4,5,7,8等
2)使用方法:1[3458]d{9}或^(13d|14[5|7]|15d|166|17[3|6|7]|18d)d{8}$
import rex="15888889999"y="12345671189"xr=re.search("^(13d|14[5|7]|15d|166|17[3|6|7]|18d)d{8}$",x)yr=re.search("^(13d|14[5|7]|15d|166|17[3|6|7]|18d)d{8}$",y)print("正确手机号:",xr.group())print("不正确的手机号:",yr.group())
4、身份证号
1)说明:一般身份证号为15位或18位,15位是以xxxxxxYYMMddxxx形式出现,前六位表示地区,YY表示年份,MM表示月份,dd表示天数,xx表示顺序码,最后的x表示校验码
2)使用方法:
/^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$|^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}([0-9]|X)$
import rex="360722195511292166"y="3602011959022018889"xr=re.search("/^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$|^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}([0-9]|X)$",x)yr=re.search("/^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$|^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}([0-9]|X)$",y)print("正确身份证号:",xr.group())print("不正确的身份证号:",yr.group())
5、邮政编码
1)说明:中国的邮政编码一般是6位
2)使用方法:[1-9]d{5}(?!d)
import rex="12332 233433 34565 532336 "xr=re.findall('[1-9]d{5}(?!d)',x)print ("邮政编码匹配:",xr)
6、空白处理
1)说明:在文本处理中,常常需要进行删除空白行、删除行首尾空白等操作
2)使用方法:空白行的正则表达式为s*,首尾空白字符的正则表达式为^s*|s*$或(^s*)|(s*$)
import rex=" 好好学习,天天向上,很重要!!"y="学习python "xr=re.sub('s*|s*','',x)yr=re.sub('(^s*)|(s*$)','',y)print ("开头空格处理:",xr)print ("结尾空格处理:",yr)