代码如下:
importredefcheck_password(password):#检查长度是否在6-20之间ifnot6<=len(password)<=20:returnFalse#检查是否包含小写字母ifnotre.search(r'[a-z]',password):returnFalse#检查是否包含大写字母ifnotre.search(r'[A-Z]',password):returnFalse#检查是否包含数字ifnotre.search(r'[0-9]',password):returnFalse#检查是否包含特殊字符ifnotre.search(r'[!@#$%^&*()_-=,.<>?]',password):returnFalsereturnTrue#测试password="Abc123!@"print(check_password(password))#Truepassword="abc"print(check_password(password))#False描述信息:
- 代码中我们定义了一个check_password函数,该函数接受一个参数password,表示要验证的密码
- 首先判断密码长度是否在6-20之间,如果不是,直接返回False
- 使用正则表达式re.search("[a-z]",password)判断密码中是否包含小写字母,如果不包含,返回False
- 同理使用re.search("[A-Z]",password)判断是否包含大写字母,使用re.search("[0-9]",password)判断是否包含数字,如果不是,直接返回False
当然,你也可以使用re.compile()函数编译了一个正则表达式,代码如下:
importrepassword_pattern=re.compile(r'^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_-=,.<>?])[A-Za-z\d!@#$%^&*()_-=,.<>?]{6,20}$')#测试password="Abc123!@"print(bool(password_pattern.match(password)))#Truepassword="abc"print(bool(password_pattern.match(password)))#False描述信息:
- 正则表达式中我们使用了(?=.[a-z])匹配至少一个小写字母,(?=.[A-Z])匹配至少一个大写字母,(?=.\d)匹配至少一个数字,(?=.[!@#$%^&()_-=,.<>?])匹配至少一个特殊字符,[A-Za-z\d!@#$%^&()_-=,.<>?]{6,20}$匹配6-20位的字符串
- 使用.match()方法来匹配字符串,如果匹配成功返回一个matchobject,否则返回None