一个正则表达式,用于排除单词/字符串

我有一个正则表达式如下:

^/[a-z0-9]+$

这匹配诸如/hello/hello123

但是,我希望它排除一些字符串值,例如/ignoreme/ignoreme2

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

我最近一次微弱的尝试是

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

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


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

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

注意:只有一个捕捉表达式: ([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]+$

现在这两个条件都必须是真实的(既不允许忽略也不允许)来匹配。

链接地址: http://www.djcxy.com/p/76695.html

上一篇: A regular expression to exclude a word/string

下一篇: Regular expression search replace in Sublime Text 2