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)
>>>不能匹配,我不知道为什么,有人能帮我吗?谢谢!
发布于 2016-05-08 01:19:06
如果您试图确保密码至少包含其中之一(下限、上限、数字),则需要进行单独检查:
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))基本的正则表达式是特定于订单的。另一种方法是使用lookahead(如果您的regex风格支持):
re.search(r"(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])")然而,这可能比单独执行每个检查的效率要低。
发布于 2016-05-08 01:16:58
将其更改为:
re.search(r"([a-z]+[0-9]+[A-Z]+)", password)
它也应该与字符的顺序相匹配。
发布于 2016-05-08 01:17:05
正则表达式描述具有1个或多个小写字符、1个或多个大写字符以及一个或多个数字的字符串。
在第一种情况下(ULFFunH8ni),它找到"unH8";
在第二种情况下(Fa11con77YES)没有匹配的子字符串。
如果希望整个字符串与正则表达式匹配,则应使用re.match();
https://stackoverflow.com/questions/37091415
复制相似问题