您能否为正则表达式提供建议:
不等于string1,string2,string3和不区分大小写
我有以下内容,但没有给我我想要的东西。
/^(?!string1|string2|string3)$/
由于
答案 0 :(得分:2)
对不起,如果我走错路,但为什么不否定积极的比赛?
if (!preg_match("/^(string1|string2|string3)$/i",$str) {
// ...
}
答案 1 :(得分:1)
正则表达式中需要AND
,而不是OR
。因为如果您的字符串为string3
,则它将不等于string1
和string2
,因此它会匹配。 你不能用正则表达式来解决这个问题(至少不能以我认为可读的方式解决;)。 当然你可以通过反转匹配的输出。
您还可以使用非正则表达式方法(可能更容易维护):
$blacklist = array('string1', 'string2', 'string3');
if(!in_array(strtolower($str), $blacklist)) {
}
答案 2 :(得分:0)
你能试试吗? if(!preg_match('/(string1 | string2 | string3)/ i',$ str))
答案 3 :(得分:0)
当我需要找到“不包含......的文件”时,我会使用它:
(αS)\ A((?!版权)。)* \Ž
这是字符串“Copyright”...根据需要替换字符串;以及\ A(文件的开头)和\ Z(文件的结尾)。