我正在尝试让我的代码检查用户输入是否只包含以下字符:"!$%^&*()_-+="
如果它包含任何其他字符,则应减去点数。我试过了,但它没有正常工作:
if "a-z" not in password and "A-Z" not in password and "0-9" not in password:
points = points - 1
我该如何解决这个问题?
谢谢
答案 0 :(得分:2)
您可以通过转义上面列出的字符来使用正则表达式:
import re
s = "_%&&^$"
if not re.findall("^[\!\$\%\^\&\*\(\)\_\-\+\=]+$", s):
points -= 1
答案 1 :(得分:0)
我会使用正则表达式。
import re
if not (re.compile("[\"\!\$\%\^\&\*\(\)_\-\+=\"]+").match(s)): #Subtract points
答案 2 :(得分:0)
正如其他人所说,你可以使用正则表达式。像这样的生成器表达式也有效:
points -= sum(1 for x in password if x not in '!$%^&*()_-+=')