Здравствуйте. прошу помощи в написании регулярки для проверки логина при регистрации пользователя.
Параметры:
Логин может состоять только из букв латинского алфавита, цифр, нижнего подчеркивания, тире.
Логин может начинаться только с буквы или цифры.
Заканчиваться только буквой или цифрой.
в логине может быть только один дефис или одно подчеркивание. (именно или дефис или подчеркивание)
Логин может начинаться только с буквы или цифры
^[a-z\d]
Заканчиваться только буквой или цифрой
[a-z\d]$
в логине может быть только один дефис или одно подчеркивание. (именно или дефис или подчеркивание)
[a-z\d]*[_-]?[a-z\d]*
Шаблон в сборе:
~^[a-z\d][a-z\d]*[_-]?[a-z\d]*[a-z\d]$~i
Вместе с php будет выглядеть так:
$str = '0we-r9';
$patt = '~^[a-z\d][a-z\d]*[_-]?[a-z\d]*[a-z\d]$~i';
preg_match($patt, $str, $arr);
var_dump($arr);
Вот так, если дефиса или подчёркивания может и не быть:
/^([^\W_]|[^\W_]+[_\-]?[^\W_]+)$/
Если обязательно что-то из этого должно быть:
/^[^\W_]+[_\-][^\W_]+$/
Сборка персонального компьютера от Artline: умный выбор для современных пользователей