preg_match это или это, но не соответствует ни одному из этого

Итак, я смотрю вокруг, но у меня проблемы.

Мне нужна функция preg_match с регулярным выражением, которое находит слова в строке, просто чтобы соответствовать целому шаблону, без замены или найденной позиции.

"mct" or "MT" /i (без учета регистра)

но в то же время в этой строке не должно быть никаких слов, начинающихся или содержащих слова «md», «med», «burn», «mull», «des a», «hot tem» / i (также без учета регистра)

без учета регистра …

поэтому я попробовал что-то вроде этого:

/(mt|mct)(?!med)(?!md)(?!burn)(?!mull)(?!des a)(?!hot tem)))*$/i

но, похоже, не работает так, как я ожидал.

Пример ожидаемого поведения:

 $string                     |STATUS

McTNug10GdPap               | TRUE
McTQQMdDobPap               | FALSE (has "Md")
McT Pollo Esp Dobl Gd P     | TRUE
MTD McPollo Spicy Med       | FALSE (has "Med")
MegaBig Chikn Nugg          | FALSE

0

Решение

Вы можете использовать следующее регулярное выражение на основе требований.

/^(?!.*(?:me?d|burn|mull|des a|hot tem)).*mc?t.*$/i

Live Demo

1

Другие решения

Измените свой матч на две модели

if(preg_match("/(mc|mct)/",$string) &&
!preg_match("/(md|burn|mull|des a|hot tem)/",$string))
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector