以任何顺序匹配正则表达式
问题内容:
我想用正则表达式检查复杂的密码。
它应该具有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)
),以使正则表达式“通过”。