regex 使用正则表达式的简单密码验证器[duplicate]

hwamh0ep  于 2023-01-27  发布在  其他
关注(0)|答案(1)|浏览(116)
    • 此问题在此处已有答案**:

(23个答案)
昨天关门了。
作为我的第一个Python项目,我试图创建一个程序,它将让您输入密码并使用regex检查它是否满足要求。
我使用的密码"Apples20!"提示程序说我缺少一个特殊字符,尽管我有一个!。下面是代码:

import re

print("""Please create a password. Your password must be at least 8 characters long,
       contain at least 1 number and at least 1 special character.""")
password = input("password: ")

if len(password) < 8:
    print("Make sure your password has at least 8 characters.")
elif re.search(r"[0-9]",password) is None:
    print("Make sure your password has at least 1 number.")
elif re.search(r"[!~@#$%^&*()-_+=[]:;/]",password) is None:
    print("Make sure your password has at least 1 special character.")
else:
    print("Your password seems fine.")

我确信有更有效的方法来编写这种类型的程序,但我只想了解如何使它以应有的方式工作。
我在网上查到的这个密码项目的例子最终让我更多地困惑于作为一个新手,我一直在兜圈子。
任何其他的提示将非常感谢!谢谢。

iq0todco

iq0todco1#

问题在于括号:[]它们被解释为捕获组中的空捕获组。因此,当前您正在搜索包含任何特殊字符且其中包含空捕获组的模式。这就是您必须使用反斜杠转义字符的原因,这些字符也是regex语法的一部分,如下所示:\[\]

re.search(r"[!@#$%^&*()_+\-=\[\]{};':\"\\|,.<>\/?]", password)

相关问题