yaleksandr89
@yaleksandr89
PHP developer

Что не так с регуляркой?

Здравствуйте.
Не могу понять, почему некорректно отрабатывает регулярка.
Есть строки: 'Арг.ен!тина ма,нит нег$ра' и 'S!um summ$us mu,s' (ищу палиндром).

Первым делом из строк хочу выбросить все, кроме символов (могут быть, как латиница, так и кириллица) и цифр.
Эти строки попадают в метод:
private function checkString(string $string): void
{
    $this->incomingString = mb_strtolower($string);
    $this->preparedString = preg_replace('/[^\p{Cyrillic}\p{Latin}]/u', '', $this->incomingString);
    // ...
}

Шаблон регулярки /[^\p{Cyrillic}\p{Latin}]/u', проверяю на regex101 — все ок, пытаюсь реализовать в php — все не ок. Результат:
• первая строка преобразуется корректно: аргентинмнитнегра
• вторая вообще никак не реагирует, то есть возвращается тоже, что и попадает: s!um summ$us mu,s

В чем ошибка?
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
С регуляркой всё в порядке
Получаю ожидаемый результат

https://3v4l.org/govdO
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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