Итак, я смотрю вокруг, но у меня проблемы.
Мне нужна функция 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
Вы можете использовать следующее регулярное выражение на основе требований.
/^(?!.*(?:me?d|burn|mull|des a|hot tem)).*mc?t.*$/i
Измените свой матч на две модели
if(preg_match("/(mc|mct)/",$string) &&
!preg_match("/(md|burn|mull|des a|hot tem)/",$string))