Как проверить, является ли пароль действительным и соответствует ли регулярное выражение в Python - PullRequest
1 голос
/ 03 марта 2020

Я пишу функцию, которая иногда будет принимать массивные вызовы (около 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 символами, она потерпит неудачу.

  • Не является ли регулярное выражение медленным в пиковое время? Какие есть другие альтернативы?

1 Ответ

1 голос
/ 03 марта 2020

Следующее должно делать трюк (обратите внимание на {5,}):

re.match(r"(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])(?!.*\s).{5,}$", p)

Другими словами, {5,} означает 5 или более в отличие от {5}, что означает ровно 5 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...