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

228
02 февраля 2018, 23:06

Здравствуйте. прошу помощи в написании регулярки для проверки логина при регистрации пользователя.

Параметры:

  1. Логин может состоять только из букв латинского алфавита, цифр, нижнего подчеркивания, тире.

  2. Логин может начинаться только с буквы или цифры.

  3. Заканчиваться только буквой или цифрой.

  4. в логине может быть только один дефис или одно подчеркивание. (именно или дефис или подчеркивание)

Answer 1

Логин может начинаться только с буквы или цифры

^[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);
Answer 2

Вот так, если дефиса или подчёркивания может и не быть:

/^([^\W_]|[^\W_]+[_\-]?[^\W_]+)$/

Если обязательно что-то из этого должно быть:

/^[^\W_]+[_\-][^\W_]+$/
READ ALSO
Как правильно написать запрос к БД?

Как правильно написать запрос к БД?

Есть PHP обработчик для редактирования данных пользователя

176
mysql корректировать запроса

mysql корректировать запроса

Здравствуйте, пытаюсь обновить поле, запросом - UPDATE users SET status = {$status} WHERE id = {$id}

137
Кастомизация фильтра в Sonata Admin

Кастомизация фильтра в Sonata Admin

Имеется фильтр в админке сайта, какие атрибуты нужно использовать для изменения лейблов на значения из словаря?

168