3

如何使用 RegExp 匹配任何不包含特定单词的事物

例如:匹配任何不包含 'aabbcc' 的字符串

bbbaaaassdd // Match this
aabbaabbccaass // Reject this
4

5 回答 5

3

如果您只是在此字符序列之后,请不要使用正则表达式。使用strpos().

if (strpos('aabbaabbccaass', 'aabbcc') !== false) {
    echo 'Reject this.'
}

注意:请务必阅读手册中有关strpos()返回值的警告。

于 2013-06-18T15:54:55.703 回答
2

试试这个来避免一些字母序列:

^((?!aabbcc).)*$
于 2013-06-18T16:09:09.770 回答
2

您可以使用负前瞻:

(?!.*?aabbcc)^.*$

现场演示:http ://www.rubular.com/r/4Exbf7UdDv

PHP代码:

$str = 'aabbaabbccaass'; //or whatever
if (preg_match('/(?!.*?aabbcc)^.*$/', $str))
   echo "accepted\n";
else
   echo "rejected\n";
于 2013-06-18T15:57:41.070 回答
1

尝试这个:

if(preg_match('/aabbcc/', $string) == 0) {
   [ OK ]
}
else {
   [ NOT OK ]
}
于 2013-06-18T15:56:02.977 回答
1

您可以使用它来描述不包含aabbcc的子字符串:

(?>[^a]++|a(?!abbcc))*

对于整个字符串,只需添加锚点 ( ^ $)

于 2013-06-18T15:59:11.927 回答