我想用正则表达式检查复杂的密码。
它应该有 1 个数字 1 大写和一个小写字母,不按特定顺序。所以我虽然是这样的:
m = re.search(r"([a-z])([A-Z])(\d)", "1Az")
print(m.group())
但我不知道如何告诉他按任何顺序搜索。我试图在网上看,但我没有找到有趣的东西,谢谢你的帮助。
您可以尝试寻找密码验证正则表达式,该网站有很多;)
也就是说,您可以使用积极的前瞻来做到这一点:
re.search(r"(?=.*[a-z])(?=.*[A-Z])(?=.*\d)", "1Az")
并实际匹配字符串...
re.search(r"(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{3}", "1Az")
现在,要确保密码长度为 3 个字符:
re.search(r"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{3}$", "1Az")
积极的前瞻(?= ... )
确保内部的表达式存在于要测试的字符串中。因此,字符串必须有一个小写字符 ( (?=.*[a-z])
)、一个大写字符 ( (?=.*[A-Z])
) 和一个数字 ( (?=.*\d)
),正则表达式才能“通过”。
为什么不只是:
if (re.search(r"[a-z]", input) and re.search(r"[A-Z]", input) and re.search(r"[0-9]", input)):
# pass
else
# don't pass