Php preg_匹配这个或这个,但不匹配任何一个
所以,我四处看了一会儿,但我遇到了一些问题 我需要一个preg_match函数,它带有一个正则表达式,可以在字符串中查找单词,只需匹配整个模式,而不需要替换或查找位置Php preg_匹配这个或这个,但不匹配任何一个,php,regex,expression,preg-match,Php,Regex,Expression,Preg Match,所以,我四处看了一会儿,但我遇到了一些问题 我需要一个preg_match函数,它带有一个正则表达式,可以在字符串中查找单词,只需匹配整个模式,而不需要替换或查找位置 “mct”或“MT”/i(不区分大小写) 但同时,此字符串不能有任何以“md”、“med”、“burn”、“mull”、“des a”、“hot tem”/i开头或包含“md”、“med”、“burn”、“mull”、“des a”、“hot tem”/i的单词(也不区分大小写) 完全不区分大小写 所以我试过这样的方法: /(mt
“mct”或“MT”/i
(不区分大小写)
但同时,此字符串不能有任何以“md”、“med”、“burn”、“mull”、“des a”、“hot tem”/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
将您的匹配更改为两种模式
if(preg_match("/(mc|mct)/",$string) &&
!preg_match("/(md|burn|mull|des a|hot tem)/",$string))
您可以根据需求使用以下正则表达式
/^(?!.*(?:me?d|burn|mull|des a|hot tem)).*mc?t.*$/i
你能给我们一个字符串的例子吗?在问题中,它说必须包含
mct
或MT
,但正则表达式有(mc | mct)
,这就是我可以相应地更新我的答案的原因吗?我只是在检查你的答案,是的,它必须有(“MT”或“mct”不区分大小写)这样或那样,但我不知道“(MT | mct)”这是正确的方法。它寻求匹配“mct”而不是“mt”?完全有效!:)这正是我想要的,谢谢hwn。如果我想在“mt”和“mct”中添加另外两个匹配的单词,那就再问一个问题;“duo”或“fresh”(4个字匹配)我可以用一根管子加上吗?,谢谢你能<代码>(mc?t|duo|fresh)