您好,登錄后才能下訂單哦!
使用正則表達式怎么判斷密碼的強弱?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
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< '''
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。