• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

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

Статус
В этой теме нельзя размещать новые ответы.

kmilhailin

Новичок
Здравствуйте! Пишу мод с нуля и возникла проблема с регулярными значениями, а именно с проверкой на правильность пароля при регистрации.

В чём проблема... Я написал код который будет предоставлен ниже, для проверки символов пароля a-z, A-Z, 0-9 данные символы можно использовать в пароле. В игре вожу пароль с латиницей (пробывал и чисто цифры и цифры +латиница), но выдаёт, что не правильно ввёл пароль (а именно нарушение регистра).

Строки где указан какой должен быть регистр:

C++:
new regex:rg_passwordcheck = regex_new("^[a-zA-Z0-9](1,)$");
if(regex_check(inputtext, rg_passwordcheck))

Код регистрации (ещё не доделан, строки, которые указывают регистр отмечены красным):

C++:
stock ShowRegistration(playerid)
{
    new dialog[403+(-2+MAX_PLAYER_NAME)];
    format(dialog, sizeof(dialog),
        "Уважаемый {42aaff}%s{FFFFFF}, мы рады видеть Вас на {42aaff}Revolution Role Play{FFFFFF}\n\
        Аккаунт с таким ником не зарегистрирован\n\
        Для игры на сервере Вы должны пройти регистрацию\n\n\
        Придумайте сложный пароль для Вашего будущего аккаунта и нажмите \"Далее\"\n\
        {42aaff}• Пароль должен быть от 8-ми до 32-ух символов\n\
        • Пароль должен состоять только из чисел и латинских символов любого регистра",
    player_info[playerid][NAME]
    );
    SPD(playerid, DLG_REG, DIALOG_STYLE_INPUT, "{42aaff}Регистрация{FFFFFF} • Ввод пароля", dialog, "Далее", "Выход");
    
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid)
    {
        case DLG_REG:
        {
            if(response)
            {
                if(!strlen(inputtext))
                {
                    ShowRegistration(playerid);
                    return SCM(playerid, COLOR_RED, "[Ошибка] {FFFFFF}Введите пароль в поле ниже и нажмите \"Далее\"");
                }
                if(strlen(inputtext) < 8 || strlen(inputtext) > 32)
                {
                    ShowRegistration(playerid);
                    return SCM(playerid, COLOR_RED, "[Ошибка] {FFFFFF}Длина пароля должна быть от 8-ми до 32-ух символов");
                }
                new regex:rg_passwordcheck = regex_new("^[a-zA-Z0-9](1,)$");
                if(regex_check(inputtext, rg_passwordcheck))
                {
                    strmid(player_info[playerid][PASSWORD], inputtext, 0, strlen(inputtext), 32);
                    SPD(playerid, DLG_REGEMAIL, DIALOG_STYLE_INPUT, "{42aaff}Регистрация{FFFFFF} • Ввод Email",
                        "{FFFFFF}Введите Ваш настоящий Email адрес\n\
                        Если Вы потеряете доступ к аккаунту, то Вы сможете восстановить его через Email\n\
                        Введите его в поле ниже и нажмите \"Далее\"",
                    "Далее", "");
                }
                else
                {
                    ShowRegistration(playerid);
                    return SCM(playerid, COLOR_RED, "[Ошибка] {FFFFFF}Пароль может состоять только из чисел и латинских символов любого регистра");
                }
            }
            else
            {
                SCM(playerid, COLOR_RED, "Используйте \"/q\", чтобы покинуть сервер");
                SPD(playerid, -1, 0, " ", " ", " ", "");
                return Kick(playerid);
            }
        }
    }
    return 1;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу