匹配任意ord中的正则表达式

2024-05-26 09:19:53 发布

您现在位置:Python中文网/ 问答频道 /正文

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

它应该有1个数字1个大写字母和一个小写字母,而不是按特定顺序排列。 所以我想这样的事情:

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

但我不知道怎么让他按顺序搜索。 我试着上网,但没发现什么有趣的东西,谢谢你的帮助。


Tags: re密码searchgroup数字大写字母事情print
2条回答

你可以尝试寻找密码验证regex,这个网站有很多;)

也就是说,您可以使用positive lookaheads来执行此操作:

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")

正的lookahead(?= ... )确保要测试的字符串中存在内部表达式。因此,字符串必须有一个小写字符((?=.*[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

相关问题 更多 >