@jazzus

Какое регулярное выражение в regex для имени?

Подскажите стандарт для регулярки в реквест файле Laravel для имени. Все стандартно - нужно исключить спецсимволы добавить букву ё и, чтобы начиналось с большой буквы. Перепробовал несколько вариантов для php везде ошибки синтаксиса в регулярке. А в этом я понимаю только на грани интуиции.
Пример:
'name' => array('required','string', 'max:255', 'regex:/^([А-ЯЁ]{1}[а-яё]{255})|([A-Z]{1}[a-z]{255})$/u'),
  • Вопрос задан
  • 584 просмотра
Решения вопроса 1
Gorily
@Gorily
Если кратко по сути: {255} означает, что должно быть строго 255 символов, не меньше и не больше. Т.е. валидные у вас имена только длиной 256 символов (включая первую заглавную). Поменяйте на {1,255} и всё будет хорошо.
Но, вдадимся в детали:
  1. Почему 255? Если вы хотите, чтобы запись не превышала размер поля в базе (допустим, это SQL char с лимитом 255), то тут облом - у вас выходит 256 символов с первым обязательным, ставьте лимит {1,254}. Либо замените на обычный +, думаю фреймворк должен где-то сам проверять вхождение в поле, либо просто база обрежет имя шутника.
  2. Есть имена составные, из двух и более слов через пробел, причём не обязательно все части пишутся с большой буквы.
  3. У имён латинских, особенно если ресурс будем международный, часто встречаются диакритические знаки, которые не будут срабатывать с вашей регуляркой. Один из способов их проверки: \p{L}

Я бы сделал из всего этого такой вывод: разрешите дополнительно диакритические знаки, разрешите любой регистр и пробелы. Дайте возможность людям написать своё имя так, как им нужно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы