使用正则表达式判断密码强弱
学python的re模板,写了个文章发现没人看,所以总结出来经验,理论没人爱,实战的人心,那么既然没人喜欢理论就直接上实战,在实战中精炼理论.不多说直接先上代码
def password_level(password): weak = re.compile(r'^((d+)|([A-Za-z]+)|(W+))$') level_weak = weak.match(password) level_middle = re.match(r'([0-9]+(W+|_+|[A-Za-z]+))+|([A-Za-z]+(W+|_+|d+))+|((W+|_+)+(d+|w+))+',password) level_strong = re.match(r'(w+|W+)+',password) if level_weak: print 'password level is weak',level_weak.group() else: if (level_middle and len(level_middle.group())==len(password)): print 'password level is middle',level_middle.group() else: if level_strong and len(level_strong.group())==len(password): print 'password level is strong',level_strong.group()
解释一下
弱密码:全是数字,符号,字母
中等密码:数字加上符号,数字加上字母,字母加上符号
强密码:三个混合.
我没有区分大小写,希望有兴趣的可以自己写写.问题出现在w上因为w等价与[A-Za-z0-9_]所以前期通过W不能匹配到包含下滑线的字符串
我们来看看中等密码,数字加上符号或者字母或者_是一个组,字母加上符号或者下划线或者符号是一个组,符号或者下划线加上字母或者数字是一个组,我总觉得这个里面的代码好像不对但是通过测试又没发现什么不对的地方,就先用这个版本0.0.1吧
测试代码
if __name__ == '__main__': passwords = ('11','aa','LL','1a','1_','a_','a1','_1','*a','1a_','1a<') for pw in passwords: password_level(pw) '''----------------------output------------------------ #password level is weak 11 #password level is weak aa #password level is weak LL #password level is middle 1a #password level is middle 1_ #password level is middle a_ #password level is middle a1 #password level is middle _1 #password level is middle *a #password level is strong 1a_ #password level is strong 1a< '''
以上所述是小编给大家介绍的使用正则表达式判断密码强弱的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!
浅析一个匹配数字和字母密码的正则表达式
一个用户注册功能的密码有如下要求:由数字和字母组成,并且要同时含有数字和字母,且长度要在8-16位之间。如何分析需求?拆分!这就是软件设计
深入浅析js中的正则表达式
阅读目录正则表达式的创建正则表达式中的特殊字符(反斜杠)^$*,+,.(小数点)(问号)(x)(:x)x(=y),x(!y),x|y{n},{n,m}:[xyz],[^xyz]其他正则表达式标志正则表达式使用
正则表达式验证用户名、密码、手机号码、身份证(推荐)
废话不多说了,下面给大家介绍使用正则表达式验证用户名、密码、手机号码、身份证的写法,需要的的朋友参考下吧//用户名+(BOOL)validateUserName:(NSString
标签:字母,密码,符号,数字,正则表达式