Python 使用特殊字符验证密码 - 避免正则表达式

Python Password Validation Using Special Characters - Avoiding Regex

Python 相对较新,但我还没有在 SO 上看到类似的内容。

我正在 Python 中构建密码验证器,我已经创建了几个规则,例如长度、字母数字、大写等。我挂断的部分是我需要一个还要检查的特定特殊字符集。我不确定我是否只是有语法问题,或者我是否没有构建代码检查部分,但无论我输入什么,它似乎总是将特殊字符标记为不在密码中,即使它们在密码中也是如此。

我尝试调出特殊字符列表如下:

spec= "!@#$%&_="

完成工作的部分是对每个项目(如上所述)进行一系列验证检查,对于我正在尝试的特殊字符检查:

elif not any(s in spec for char in s):
            print ("Password must contain a special character of !@#$%&_=")

程序运行通过但命中特殊字符打印语句,即使使用应该通过的有效密码也是如此。我相信我已经挂断了 elif + any in 语句并且语法已关闭。

注意:我想避免使用正则表达式,而是使用指定的特殊字符列表。

提前致谢!

修复了将 any(s in spec for char in s) 替换为 any(char in spec for char in s) 的问题。

要检查密码是否至少包含一个特殊字符,请执行以下操作:

special_character = "!@#$%&_="

def is_valid(pwd):
    global special_character
    return any(char in spec for char in pwd)    

def is_valid_other_method(pwd):
   global special_character
   return len(set(special_character).intersection(set(pwd))) > 0

print(is_valid('qwerty!'))
# True

print(is_valid('qwerty'))
# False

输出:

True
False

你走在正确的轨道上。但是,您需要实现最后一个功能。这是您需要的所有代码。

 word = "!@#$%&&^&*"

 def true(pwd))
     global character
     return any(char in spec for char in pwd) 

 def otherthingsthatstrue(pwd):
     global character
     return len(set(character).intersection(set(pwd))) > 0

 print(true('word!')

 print(otherthingsthatstrue('word'))