繁体   English   中英

python正则表达式re.search(r“([[az] + [AZ] + [0-9] +)”,密码)

[英]python regular expression re.search(r“([a-z]+[A-Z]+[0-9]+)”, password)

python 2.7

>>>import re
>>>password="ULFFunH8ni"
>>>re.search(r"([a-z]+[A-Z]+[0-9]+)", password)
<_sre.SRE_Match object at 0x7ff5ffd075d0>

可以匹配,但何时

>>>password="Fa11con77YES"
>>>re.search(r"([a-z]+[A-Z]+[0-9]+)", password)
>>>

无法匹配,我不知道为什么,有人可以帮助我吗? 谢谢!

如果您要确保密码中至少每个密码(低,大,数字)中至少有一个,则需要进行单独的检查:

low = re.search(r"[a-z]", password)
up = re.search(r"[A-Z]", password)
num = re.search(r"[0-9]", password)
has_all = all((low, up, num))

基本正则表达式是特定于订单的。 这样做的另一种方法是使用先行(如果您的正则表达式支持):

re.search(r"(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])")

但是,这可能比仅单独进行每个检查要低效。

将其更改为:

re.search(r"([az]+[0-9]+[AZ]+)", password)

它也应该与字符的顺序匹配。

您的正则表达式描述的字符串包含1个或多个小写字符,后跟1个或多个大写字符,后跟一个或多个数字。

在第一种情况(ULFFunH8ni)中,它找到的是“ unH8”;

在第二种情况下(Fa11con77YES),没有匹配的子字符串。

如果希望整个字符串与正则表达式匹配,则应使用re.match();。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM