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