本文跟大家分享使用正規表示式來判斷密碼強弱的實例程式碼,非常不錯,具有參考借鏡價值,需要的朋友參考下吧
學 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< '''
以上是分享一個用正規表示式判斷密碼強弱的實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!