Регулярка: правильная валидация логина

Тема в разделе "Регулярные выражения", создана пользователем rasandrey, 28 фев 2012.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. rasandrey

    rasandrey

    Регистр.:
    2 апр 2009
    Сообщения:
    214
    Симпатии:
    6
    Привет!
    При регистрации проверяю валидность логина таким способом:
    PHP:
    if(preg_match("/[^0-9a-zA-Z]/",$data['login']))
    Но в этом случае не учитывается как минимум символ нижнего подчеркивания "_", как правильно валидировать регуляркой?
     
  2. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.037
    Симпатии:
    702
    ну в данном случае у тебя идет проверка на то нет ли каких-то символов не входящих в указанные в регулярке если нужно еще нижнее подчеркивание сделай так /[^0-9a-zA-Z_]/
     
  3. voproskin

    voproskin Создатель

    Заблокирован
    Регистр.:
    3 сен 2011
    Сообщения:
    36
    Симпатии:
    4
    Так Вам бы сначала определиться какие символы Вы хотите разрешить в логине :).
    А то вдруг Вы не захотите логины типа:
    _admin_
    _____Admin
    _А_д_м_и_н
     
  4. rasandrey

    rasandrey

    Регистр.:
    2 апр 2009
    Сообщения:
    214
    Симпатии:
    6
    Логин может состоять из: букв A-z, цифр 0-9, знака подчеркивания ("_") и минуса ("-")
    только наличие какой-то буквы в логине обязательно! Как можно написать такое правило?
     
  5. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    например должна быть буква z или Z
    PHP:
    $login 'az_esm_CAR-0_0-zzZ';
    $must_have '[Zz]+';
    if(
    preg_match("/^[a-zA-z0-9_\-]*".$must_have."[a-zA-z0-9_\-]*$/"$login)){
        echo 
    'ok';
    }
     
  6. empire

    empire Писатель

    Регистр.:
    31 янв 2012
    Сообщения:
    5
    Симпатии:
    0
    А как сделать так что бы юзеры регались и английскими и рускими и с цифрами, но немогли зарегатся только одними цифрами?
    Пример: ваня, ruka, ruka1987,- можно, а 12345,7658643 нельзя.
     
  7. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    если состоит из одних цифр, или состоит не из цифр или букв, то не пускать
    PHP:
    $login 'ё1';
    if(
    preg_match("/^[0-9]+$/"$login) || !preg_match("/^[0-9a-zа-яё]+$/iu"$login)){
        echo 
    'нельзя';
    }
    u если кодировка utf-8
     
  8. gerrok

    gerrok Постоялец

    Регистр.:
    10 янв 2012
    Сообщения:
    63
    Симпатии:
    8
    PHP:
    preg_match'/[^а-яА-Яa-zA-Z_ -]/'$_POST['login'])
    - проверка на символы в логине ( Оба алфавита, символ пробела,_ и - ).
    PHP:
    preg_match("/(.)\\1\\1/"$_POST['login'])
    - проверка на поторяющиеся подряд 3 одинаковых символа.
     
Статус темы:
Закрыта.