Найти - Пользователи
Полная версия: Регялурка для проверки данных пользователя при регистрации
Начало » Python для новичков » Регялурка для проверки данных пользователя при регистрации
1
DOSfag
Вот основной код:

import reg_check
while 1:
    user_email=input("""Введите, пожалуйста, e-mail адрес (имя_ящика@имя_домена). Имя_ящика
не должно быть короче 3-х символов, имя_домена должно быть не короче 2-х символов\n""")
    if reg_check.email_check(user_email)==False:
        print("Неправильный e-mail адрес")
        email_flag=False
        user_email=""
    else:
        email_flag=True
    if email_flag==True:
        user_login=input("""Введите никнейм. Никнейм должен быть не короче 4-х исмволов и
не длинее 14 символов\n""")
        if reg_check.login_check(user_login)==False:
            print("Неправильный никнейм")
            login_flag=False
            user_login=""
        else:
            login_flag=True
        if login_flag==True:
            user_password=input("""Введите пароль. Пароль должен остоять не меньше, чем из 6 символов\n""")
            if reg_check.pass_check(user_password)==False:
                print("Неправильный пароль")
                pass_flag=False
                user_password=""
            else:
                pass_flag=True
            if pass_flag==True:
                print("Регистрация прошла успешно!")
                break

Проверка данных пользователя
import re
def email_check(email):
    com=re.compile('[-a-z0-9_]{3,} @ [-a-z0-9_]{2,} \. [a-z]{2,3}',re.I|re.X)
    ser=com.match(email)
    if ser==None:
        check=False
    else:
        check=True
    return check
def login_check(login):
    com=re.compile('[-a-z0-9_]{4,14}',re.I|re.X)
    ser=com.match(login)
    if ser==None:
        check=False
    else:
        check=True
    return check
def pass_check(password):
    com=re.compile('.{6,}',re.X)
    ser=com.match(password)
    if ser==None:
        check=False
    else:
        check=True
    return check
DOSfag
Вот я поупражнялся в написании регулярных выражений
reclosedev
Я так понимаю нужны комментарии?

DOSfag
    ser=com.match(email)
    if ser==None:
        check=False
    else:
        check=True
    return check
->
return bool(com.match(email))
И вообще, нет смысла явно компилировать регекспы внутри функции записывая в локальную переменную. Или делать это один раз, или использовать re.match(…).

DOSfag
while 1:
    # input, set flag, check flag
    # ....

1.
if check(something) == False:
–>
if not check(something):

2. Есть continue
while True:
    something = input()
    if not check(something):
        print message
        continue
    something_else = input()
    if not another_check(something_else):
        print message
        continue
   do_action_with(something, something_else)
   break

Кстати, полный regexp для почты: http://ex-parrot.com/~pdw/Mail-RFC822-Address.html
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB