正则表达式 - 值不等于

时间:2011-02-03 16:53:44

标签: php regex

您能否为正则表达式提供建议:

不等于string1,string2,string3和不区分大小写

我有以下内容,但没有给我我想要的东西。

/^(?!string1|string2|string3)$/

由于

4 个答案:

答案 0 :(得分:2)

对不起,如果我走错路,但为什么不否定积极的比赛?

if (!preg_match("/^(string1|string2|string3)$/i",$str) {
    // ...
}

答案 1 :(得分:1)

正则表达式中需要AND,而不是OR。因为如果您的字符串为string3,则它将不等于string1string2,因此它会匹配。 你不能用正则表达式来解决这个问题(至少不能以我认为可读的方式解决;)。 当然你可以通过反转匹配的输出。

您还可以使用非正则表达式方法(可能更容易维护):

$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(文件的结尾)。