正则expression式排除一个字/string

我有一个正则expression式如下:

^/[a-z0-9]+$ 

这匹配诸如/hello/hello123

不过,我希望它排除一些string值,如/ignoreme/ignoreme2

我已经尝试了几个变种,但似乎无法得到任何工作!

我最近一次微弱的尝试是

 ^/(((?!ignoreme)|(?!ignoreme2))[a-z0-9])+$ 

任何帮助将不胜感激:-)

还有一种方法:(使用负面预测 ):

 ^/(?!ignoreme|ignoreme2|ignoremeN)([a-z0-9]+)$ 

注意:只有一个捕捉expression式: ([a-z0-9]+)

这应该做到这一点:

 ^/\b([a-z0-9]+)\b(?<!ignoreme|ignoreme2|ignoreme3) 

你可以添加尽可能多的忽略单词,这是一个简单的PHP实现:

 $ignoredWords = array('ignoreme', 'ignoreme2', 'ignoreme...'); preg_match('~^/\b([a-z0-9]+)\b(?<!' . implode('|', array_map('preg_quote', $ignoredWords)) . ')~i', $string); 

因为你想排除这两个词,你需要一个连接:

 ^/(?!ignoreme$)(?!ignoreme2$)[a-z0-9]+$ 

现在,这两个条件必须是真实的(既不能忽视也不能忽视 )才能有一个匹配。