关于python正则表达式场景收集(二)
本期收录正则表达式场景包括整数、IP和URL、身份证和邮编、账号密码合法性判断,部分经过测试后做了修改和完善,绝大多数正则表达式还是有很多优化空间的,关于?=之类的断言目前还谈不上掌握,慢慢摸索吧。
代码示例
import re
regex_dict = {'整数':'(^(\-|\+)?[1-9][0-9]*$)|^0$',
'正整数':'^(\+)?[1-9][0-9]*$',
'负整数':'-[1-9][0-9]*$',
'IP地址':'^((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}$',
'URL地址':'((http:|ftp:|https:|)\/\/)?[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?',
'身份证号码':'(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx]$)',
'中国邮政编码':'^[1-9]\d{5}$',
'帐号是否合法':'^[a-zA_Z][a-zA-Z0-9_]{4,19}$',
'密码合法性':'^(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])).{4,12}$'
}
data='25.1999.0.0'
res = re.search(regex_dict['IP地址'], data)
print(res)
data='www.baidu.com'
res = re.search(regex_dict['URL地址'], data)
print(res)
data='ftp://www.baidu.com:8080'
res = re.search(regex_dict['URL地址'], data)
print(res)
data='http://baidu.com/aaa=?'
res = re.search(regex_dict['URL地址'], data)
print(res)
data='401112198303030052'
res = re.search(regex_dict['身份证号码'], data)
print(res)
data='410111830303052'
res = re.search(regex_dict['身份证号码'], data)
print(res)
data='401112198314030052'
res = re.search(regex_dict['身份证号码'], data)
print(res)
data='4011121983030300521'
res = re.search(regex_dict['身份证号码'], data)
print(res)
data='4444444'
res = re.search(regex_dict['中国邮政编码'], data)
print(res)
data='4444444'
res = re.search(regex_dict['密码合法性'], data)
print(res)
data='Wbq11111*!'
res = re.search(regex_dict['密码合法性'], data)
print(res)
相关文章