使用正規表示式判斷密碼強弱

2021-09-28 02:25:02 字數 1623 閱讀 9886

**

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<

'''北京**建設

使用正規表示式判斷密碼強弱

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...

密碼正規表示式

1 密碼由6 32位字母 數字或下劃線構成 2 至少需要一位小寫字母 3 至少需要一位大寫字母 4 至少需要一位數字。string password password system.out.println password null password.length 6 password.length...

正規表示式判斷

public class test 校驗輸入的qq號碼是否符合規則 param qq return public static boolean checkqq1 string qq 如果qq號碼中有任何一位不是數字,就直接返回false for int i 0 i qq.length i 如果首位是...