写一段要求用户设置密码的代码
密码的规则是
到目前为止,我写过:
for x in range(0, 3):
usrname = input('Enter your User Name: ')
pwd = input('Enter a Password : ')
cpwd = input('Enter your Confirm Password: ')
if pwd==cpwd:
break
else:
print('Password does not match please Re-enter')
对于申请密码规则的正则表达式,我们不清楚。所以任何人都可以帮我修改密码的正则表达式。
答案 0 :(得分:1)
您不需要使用正则表达式。
要检查是否有号码,您可以使用:
any(c.isdigit() for c in passw)
要检查大写,您可以使用isupper()
和islower()
进行小写操作。要检查它们是否都是合法字符,我只需要用白名单定义一个字符串,然后执行以下操作:
all(c in whitelist for c in passw)
然后,您可以将所有这些条件与all()
内置字符串串联起来。
我会让你去实施它。毕竟,这是你的任务。
答案 1 :(得分:0)
我可能不会使用正则表达式来检查密码中的大写小写和数字。我只是遍历pwd
字符串并设置有关您的要求是否已填充的标记,然后使用正则表达式来测试允许的字符。
import re
hasUpper, hasLower, hasDigit = False, False, False
for ch in pwd:
if not hasUpper and ch in "ABCDEFGHIJKLMNOPQRSTUVWXYZ": # This is also string.ascii_uppercase
hasUpper = True
if not hasLower and ch in "abcdefghijklmnopqrstuvwxyz": # This is also string.ascii_lowercase
hasLower = True
if not hasDigit and ch in "0123456789":
hasDigit = True
if all(hasUpper, hasLower, hasDigit) and not re.search("[^A-Za-z0-9_.-]",pwd):
# password requirements fulfilled