代码如下:
import re def check_password(password): # 检查长度是否在6-20之间 if not 6 <= len(password) <= 20: return False # 检查是否包含小写字母 if not re.search(r\'[a-z]\',password): return False # 检查是否包含大写字母 if not re.search(r\'[A-Z]\',password): return False # 检查是否包含数字 if not re.search(r\'[0-9]\',password): return False # 检查是否包含特殊字符 if not re.search(r\'[!@#$%^&*()_+-=,.<>?]\',password): return False return True # 测试 password = \"Abc123!@\" print(check_password(password)) # True password = \"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() 函数编译了一个正则表达式,代码如下:
import re password_pattern = re.compile(r\'^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[!@#$%^&*()_+-=,.<>?])[A-Za-z\\d!@#$%^&*()_+-=,.<>?]{6,20}$\') # 测试 password = \"Abc123!@\" print(bool(password_pattern.match(password))) # True password = \"abc\" print(bool(password_pattern.match(password))) # False
描述信息:
- 正则表达式中我们使用了 (?=.[a-z]) 匹配至少一个小写字母, (?=.[A-Z]) 匹配至少一个大写字母, (?=.\\d) 匹配至少一个数字,(?=.[!@#$%^&()_+-=,.<>?]) 匹配至少一个特殊字符, [A-Za-z\\d!@#$%^&()_+-=,.<>?]{6,20}$ 匹配6-20位的字符串
- 使用 .match()方法来匹配字符串,如果匹配成功返回一个match object,否则返回None
附要求:6位密码,含有数字、大小写字母,及~!@中的特殊符号
import re while True: pwd = input(\'请输入您的密码:\') r = \'^(?=.*?\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@])[0-9a-zA-Z~!@]{6}$\' result = re.match(r, pwd) if result is None: print(\'请输入正确的密码格式!\') print(\'要求6位密码,含有数字、大小写字母,及~!@中的特殊符号!\') else: break print(\'成功设置密码!\') print(f\'您的密码是:{pwd}\')
(?=.*?\\d) 检查数字;(?=.*[a-z]) 检查小写英文字母;(?=.*[A-Z]) 检查大写英文字母;
测试:
# 若不限制长度 r = \'^(?=.*?\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@]).*$\'
总结
© 版权声明
THE END
暂无评论内容