Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 18, 2022 22:12:19

DmBand
Зарегистрирован: 2021-02-03
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Регулярное выражение для пароля

Я использую следующее регулярное выражение для валидации пароля в Django:

 regex=r'^[^а-яА-Я]*$'
т.е. я исключаю все символы кириллицы.
Но, если пользователь введёт все пробелы, то пароль пройдет валидацию.
Как правильно написать регулярное выражение, согласно которому в пароле может присутствовать пробел, но не так, чтобы весь пароль состоял из пробелов?
Я не силён в регулярных выражениях, поэтому прошу помощи.

Отредактировано DmBand (Апрель 18, 2022 22:13:36)

Офлайн

#2 Апрель 19, 2022 03:12:34

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Регулярное выражение для пароля

DmBand
Но, если пользователь введёт все пробелы, то пароль пройдет валидацию.
Сделай несколько разных проверок одного пароля. И потом применяй их друг за другом. Если проверки все пройдены, то пароль верный. Если хоть одна проверка не пройдена, то пароль неверный.

  
>>> import re
>>> 
>>> def check(string):
...     out = None
...     pat1 = r'^[^а-яёА-ЯЁ]+$'
...     check1 = re.search(pat1, string) is not None
...     pat2 = r'^ +$'
...     check2 = re.search(pat2, string) is None
...     out = check1 and check2
...     return out
... 
>>> check('')
False
>>> check('abc')
True
>>> check('abc123')
True
>>> check('абв')
False
>>> check('abcабв')
False
>>> check('a b c')
True
>>> check('а б в')
False
>>> check('   ')
False
>>>



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version