以任何顺序匹配正则表达式

Or *_*imi 4 python regex match

我想用正则表达式检查复杂的密码.

它应该有1个1号大写和1个小写字母,而不是特定的顺序.所以我对这样的事情:

m = re.search(r"([a-z])([A-Z])(\d)", "1Az")
print(m.group())
Run Code Online (Sandbox Code Playgroud)

但我不知道如何告诉他以任何顺序搜索.我试着在网上看,但我找不到有趣的东西,谢谢你的帮助.

Jer*_*rry 9

您本来可以尝试寻找密码验证正则表达式,该网站有很多;)

也就是说,您可以使用积极的前瞻来做到这一点:

re.search(r"(?=.*[a-z])(?=.*[A-Z])(?=.*\d)", "1Az")
Run Code Online (Sandbox Code Playgroud)

并实际匹配字符串......

re.search(r"(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{3}", "1Az")
Run Code Online (Sandbox Code Playgroud)

现在,要确保密码长度为3个字符:

re.search(r"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{3}$", "1Az")
Run Code Online (Sandbox Code Playgroud)

正向前瞻(?= ... )确保内部表达式存在于要测试的字符串中.因此,字符串必须有一个小写字符((?=.*[a-z])),一个大写字符((?=.*[A-Z]))和一个数字((?=.*\d)),用于正则表达式"传递".