Задать вопрос
@matthewstafford

Что не так с регулярным выражением?

Здравствуйте! Такая проблема, у меня есть регулярное выражения для проверки имени и фамилии, но оно не работает с русским языком. Если вводить имя/фамилию на русском, то он выводит ошибку, с английскими буквами работает отлично.

Регулярное выражение:
if(!preg_match("/^([А-Я]{1}[а-яё]{1,23}|[A-Z]{1}[a-z]{1,23})$/", $_POST['firstname']))
  • Вопрос задан
  • 137 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Stepik
    Язык программирования PHP
    1 неделя
    Далее
Решения вопроса 2
@D3lphi
Добавьте флаг u к регулярному выражению, чтобы получилось так:
if(!preg_match("/^([А-Я]{1}[а-яё]{1,23}|[A-Z]{1}[a-z]{1,23})$/u", $_POST['firstname']))


Это включит поддержку юникода.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Оно у вас ещё и с двойными фамилиями не работает. Во придёт какой-нибудь Ёжиков-Залесский и что делать будете?
/^(?:[А-ЯЁ][а-яё]{1,23}(?:-[А-ЯЁ][а-яё]{1,23})?|[A-Z][a-z]{1,23}(?:-[A-Z][a-z]{1,23})?)$/u
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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