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

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

rasandrey

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

Но в этом случае не учитывается как минимум символ нижнего подчеркивания "_", как правильно валидировать регуляркой?
 
ну в данном случае у тебя идет проверка на то нет ли каких-то символов не входящих в указанные в регулярке если нужно еще нижнее подчеркивание сделай так /[^0-9a-zA-Z_]/
 
  • Заблокирован
  • #3
Так Вам бы сначала определиться какие символы Вы хотите разрешить в логине :).
А то вдруг Вы не захотите логины типа:
_admin_
_____Admin
_А_д_м_и_н
 
Логин может состоять из: букв A-z, цифр 0-9, знака подчеркивания ("_") и минуса ("-")
только наличие какой-то буквы в логине обязательно! Как можно написать такое правило?
 
например должна быть буква 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';
}
 
А как сделать так что бы юзеры регались и английскими и рускими и с цифрами, но немогли зарегатся только одними цифрами?
Пример: ваня, ruka, ruka1987,- можно, а 12345,7658643 нельзя.
 
если состоит из одних цифр, или состоит не из цифр или букв, то не пускать
PHP:
$login = 'ё1';
if(preg_match("/^[0-9]+$/", $login) || !preg_match("/^[0-9a-zа-яё]+$/iu", $login)){
    echo 'нельзя';
}
u если кодировка utf-8
 
PHP:
preg_match( '/[^а-яА-Яa-zA-Z_ -]/', $_POST['login'])
- проверка на символы в логине ( Оба алфавита, символ пробела,_ и - ).
PHP:
preg_match("/(.)\\1\\1/", $_POST['login'])
- проверка на поторяющиеся подряд 3 одинаковых символа.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху