一个正则表达式,用于排除单词/字符串
我有一个正则表达式如下:
^/[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