preg_match这个或这个但不匹配任何这个

时间:2014-10-22 20:19:12

标签: php regex expression 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 

2 个答案:

答案 0 :(得分:1)

您可以根据要求使用以下正则表达式。

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

Live Demo

答案 1 :(得分:0)

将您的比赛更改为两种模式

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