Python: проверка логина

категория: Python
Была такая боевая задача на очередном прохождении тестов в очередную крутую компанию, решил поделиться с читателями. Задача звучала следующим образом: "В системе авторизации есть следующее ограничение на формат логина: «Логин должен начинаться с латинской буквы, может состоять из латинских букв, цифр, точки и минуса и должен заканчиваться латинской буквой или цифрой. Минимальная длина логина — 1 символ. Максимальная — 20 символов». Напишите код, проверяющий, соответствует ли входная строка этому правилу." Решил написать функцию, которая будет получать "логин пользователя", а возвращать True если слово подходит под правила или False - если нет. Так как будем проверять слово - без модуля "re" и регулярных выражений не обойтись. Пришлось их вспоминать довольно долго, так как в Django только в urls.py писал и то не особо сложные конструкции. Итак вот сам код:
def check_login(login):
    flag = False
    if 0 < len(login) <= 20:
        from re import match
        if match(r'^[a-zA-Z]([-.\w]*\w)?$', login):
            flag = True
    return flag
^[a-zA-Z] - первый символ состоит из латинской буквы нижнего или верхнего регистра [-.\w]* - любая латинская буква, цифра, знаки "." и "-", один или более символов или ни одного \w$ - последний символ - цифра или любая латинская буква ? - указывает что может быть совпадение, а может и не быть. Регулярные выражения - очень мощный язык с помощью которого можно делать всякие чудеса :) Интересно чем закончится мой очередной тест :)


blog comments powered by Disqus