Regex для пароля без специальных символов - PullRequest
1 голос
/ 06 апреля 2020

У меня есть требование для подтверждения пароля с помощью регулярного выражения

  • Пароль должен содержать не менее четырех символов,
    • как минимум один символ нижнего регистра,
    • в хотя бы один символ в верхнем регистре,
    • хотя бы один номер

^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{4,}$

У меня выше работает регулярное выражение, но оно принимает любые специальные персонаж. Как я могу отклонить это, пожалуйста, руководство

1 Ответ

2 голосов
/ 06 апреля 2020

Вероятно, было бы проще и понятнее проверить каждое правило отдельно

def validate_password(password: str) -> bool: 
  return bool(
        len(password) >= 4 and 
    and re.search(r'[a-z]', password) 
    and re.search(r'[A-Z]', password)
    and re.search(r'[0-9]', password)
    and not re.search(r'[^a-zA-Z0-9]', password)  # exclude non alphanumeric
  )

В противном случае вы могли бы использовать отрицательное прогнозное утверждение

^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?!.*[^a-zA-Z0-9]).{4,}$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...