1、題目要求:
寫一個函數,用正則表達式驗證密碼的強度,要求:
1.密碼的長度大於或等於8位數
2.強:字母+數字+特殊字符
3.中:字母+數字,字母+特殊字符,數字+特殊字符
4.弱:純數字,純字母,純特殊字符
2、代碼:
#!/usr/bin/python
import re
def verify_password(password):
printTip = "密碼強度:"
m = re.match(r'\d+|[a-z]+|[^a-z0-9]+', password, re.I).span()
# 若匹配的字符長度等於用戶輸入長度,證明其中一種匹配規則能完整匹配整個密碼即純數字,純字母,純特殊字符
if m[1] == len(password):
printTip = printTip + "弱。"
else:
# 這裏有三套匹配規則,若數字、字母、或者字符任意一個匹配不到字符,m都爲None,否則說明三種情況都有
m1 = re.search(r'\d+', password)
m2 = re.search(r'[a-z]+', password, re.I)
m3 = re.search(r'[^a-z0-9]+', password, re.I)
if m1 and m2 and m3:
printTip = printTip + "強。"
else:
printTip = printTip + "中。"
return printTip
if __name__ == '__main__':
password = input("請輸入密碼:")
# 如果用戶輸入不足8位數,則讓用戶繼續輸入
while len(password) < 8:
password = input("密碼的長度不足8位數,請重新輸入密碼:")
print("密碼設置成功!" + verify_password(password))