@matthewstafford

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

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

Регулярное выражение:
if(!preg_match("/^([А-Я]{1}[а-яё]{1,23}|[A-Z]{1}[a-z]{1,23})$/", $_POST['firstname']))
  • Вопрос задан
  • 136 просмотров
Решения вопроса 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
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽