2011-02-03 61 views
0

你可以建議對正則表達式爲:正則表達式 - 值不等於

不等於字符串1,字符串,STRING3和不區分大小寫

我有以下,但不給我我想要的。

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

感謝

回答

2

很抱歉,如果我在錯誤的道路上,但爲什麼不能否定正匹配?

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

+1爲什麼我還沒有想到:D – 2011-02-03 17:03:59

1

您將需要在正則表達式的AND,不OR。因爲如果你的字符串是string3,它將不等於string1string2,所以它會匹配。 你不能用正則表達式來解決這個問題(至少不能用我認爲可讀的方式))。當然你可以通過反轉匹配的輸出。

您也可以使用非正則表達式的方法(可能會更容易維護):

$blacklist = array('string1', 'string2', 'string3'); 

if(!in_array(strtolower($str), $blacklist)) { 

} 
0

你可以試試嗎? 如果(的preg_match( '/(字符串1 |字符串2 | STRING3)/ I',$ STR)!)

0

我用這個當我需要找到 「不包含文件...」:

(?s)\ A((?!版權)。)* \ Z

這是爲字符串「Copyright」...根據需要替換字符串;以及\ A(文件的開頭)和\ Z(文件的結尾)。