我需要检查字符串(密码验证器)是否包含python中的特定字符和长度。其中一个条件是字符串pwd只包含字符a - z、a - z数字或特殊字符"+","产生绯闻;,"*","/"。
引用
这些实用程序应该可以帮助我解决这个问题(但我不明白):
- 使用isupper/islower决定字符串是大写还是小写
- 使用isdigit检查是否为数字
- 使用中的操作符检查指定字符是否存在字符串。
pwd = "abc"
def is_valid():
# You need to change the following part of the function
# to determine if it is a valid password.
validity = True
# You don't need to change the following line.
return validity
# The following line calls the function and prints the return
# value to the Console. This way you can check what it does.
print(is_valid())
我很感激你的帮助!我们可以在这里使用re.search
作为regex选项:
def is_valid(pwd):
return re.search(r'^[A-Za-z0-9*/+-]+$', pwd) is not None
print(is_valid("abc")) # True
print(is_valid("ab#c")) # False
您可以使用正则表达式,但由于该任务只涉及检查字符是否属于集合,使用python sets可能更有效。:
def is_valid(pwd):
from string import ascii_letters
chars = set(ascii_letters+'0123456789'+'*-+/')
return all(c in chars for c in pwd)
例子:
>>> is_valid('abg56*-+')
True
>>> is_valid('abg 56*')
False
使用正则表达式的替代:
def is_valid(pwd):
import re
return bool(re.match(r'[a-zA-Zd*+-/]*$', pwd))