Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于密码匹配的Python正则表达式(re)_Python_Regex_Python 2.7 - Fatal编程技术网

用于密码匹配的Python正则表达式(re)

用于密码匹配的Python正则表达式(re),python,regex,python-2.7,Python,Regex,Python 2.7,我正试图根据以下条件验证输入的密码 1.应至少包含2个大写字母 2.应至少包含2个小写字母 3.字符串的最小长度必须为6 4.应至少包含2位数字 5.应至少包含1个特殊字符 6.密码总长度必须为10 我试着创建一个类似这样的模式 import re res=re.match(r'[[A-Z{2,}][a-z{2,}][0-9{2,}][/s]+]{10}',"AaBb69%#Ag") print res 但是它一个也没有返回。任何人请帮助我 您想要做的事情不能用一个正则表达式来完成。您需要为每

我正试图根据以下条件验证输入的密码

1.应至少包含2个大写字母

2.应至少包含2个小写字母

3.字符串的最小长度必须为6

4.应至少包含2位数字

5.应至少包含1个特殊字符

6.密码总长度必须为10

我试着创建一个类似这样的模式

import re
res=re.match(r'[[A-Z{2,}][a-z{2,}][0-9{2,}][/s]+]{10}',"AaBb69%#Ag")
print res

但是它一个也没有返回。任何人请帮助我

您想要做的事情不能用一个正则表达式来完成。您需要为每个约束匹配不同的正则表达式,并且密码仅在每个约束都匹配时有效

对于至少两个大写字符的限制,请将两个大写字符与介于两者之间的任何字符进行匹配:
r'[A-Z].[A-Z]'

小写:
r'[a-z].[a-z]'

对于数字:
r'[0-9].[0-9]'

对于至少一个特殊字符:
r'[!@$%^&*()-
,其中括号包含允许的特殊字符

对于长度,最小值为6,最大值为10:
r'^.{6,10}$'

虽然可以使用正则表达式来实现这一点,但您可能会发现在普通python中编写没有约束的约束更容易。以长度为例,你可以这样做


if 6而不是作为一个整体尝试您的regexp,然后不知道如何调试它,这里有一种方法可以解决这个问题:尝试从第一个组件开始
[a-Z{2,}]
看看是否匹配,然后添加下一个,看看是否匹配,等等。一旦发现不匹配的东西,这样你就更容易弄明白为什么它不起作用了。还可以使用其他“有效”密码测试您的部分模式-事实上,为自己建立一个必须接受的好密码和不能接受的坏密码的列表。Good luck.BTW建立好密码和坏密码列表可能会暴露您的“条件”中的不兼容性。请记住,您的问题可能无法在单个正则表达式中解决。它不会返回任何值,因为正则表达式不包含字符%和#。在正则表达式中添加“特殊字符”。@barny:我已经拆分了组件并对其进行了测试。它可以在条件下正常工作。不能加入它们吗?@GeneByun:我省略了第5个条件。但它没有显示任何条件。谢谢