我正在使用Python 3.6并在Jupyter Notebook上工作。我使用正则表达式进行密码验证的代码非常有效。我只是想增强一下密码,密码应该始终以大写字母开头。我不知道如何在elif循环中编写正则表达式。代码如下:
import re
import getpass
pattern = re.compile(r"")
while True:
my_str = getpass.getpass("Enter a password: ")
if(8>len(my_str)):
print("Password must be of 8 digits")
if re.search(r"[a-z{1,9}]", my_str) is None:
print("Your Password must contain 1 lowercase letter")
if re.search(r"[!@$&{1,5}]", my_str) is None:
print("Your Password must contain 1 special character")
if re.search(r"[A-Z{1,5}]", my_str) is None:
print("Your Password must contain 1 uppercase letter")
if re.search(r"\d{1,5}", my_str) is None:
print("Your Password must contain 1 digit")
elif re.match(r"[A-Za-z0-9@#$%^&+=]{8,}",my_str):
pattern = re.compile(r"[A-Za-z0-9@#$%^&+=]{8,}")
password = pattern.match(my_str)
print(password)
break
else:
print("Not a valid Password")
答案 0 :(得分:0)
您可以使用此条件测试第一个字符是否为大写字母:
dt.weekday_name
Index(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Monday',
'Tuesday', 'Wednesday', 'Thursday', 'Friday'],
dtype='object')
尽管如此,您的代码还有更多错误
您在my_str[0].isupper()
语句中描述的条件似乎与您要测试的条件不符。
例如,条件print
将检查密码是否包含小写字母或任何字符re.search(r"[a-z{1,9}]", my_str)
,{
,1
,,
, 9
。您可能希望将括号放在字符集之外。
此外,您的代码流不正确,例如,将永远无法访问}
循环的else
子句。
建议使用while
标志,只要不满足条件,该标志就会变为valid
,只有标志仍然为False
时,循环才最终退出。否则,将打印未满足的条件,并重新开始循环。
True