Я пишу функцию, которая иногда будет принимать массивные вызовы (около 2 Кб / мин), и она должна проверять действительность пароля.
Мои требования просты:
не менее 5 символов;
не менее 1 цифры;
не менее 1 заглавной буквы;
Как минимум 1 строчная буква;
Как минимум 1 специальный символ.
На данный момент у меня есть код мой функция как:
import re
def check(p):
return re.match(r"(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])(?!.*\s).{5}$", p)
У меня есть несколько вопросов:
Почему мое регулярное выражение работает только для 5 символов? Если я попытаюсь проверить строку с 6 символами, она потерпит неудачу.
Не является ли регулярное выражение медленным в пиковое время? Какие есть другие альтернативы?