A regular expression to exclude a word/string
I have a regular expression as follows:
^/[a-z0-9]+$
This matches strings such as /hello
or /hello123
.
However, I would like it to exclude a couple of string values such as /ignoreme
and /ignoreme2
.
I've tried a few variants but can't seem to get any to work!
My latest feeble attempt was
^/(((?!ignoreme)|(?!ignoreme2))[a-z0-9])+$
Any help would be gratefully appreciated :-)
Here's yet another way: (using a negative look-ahead):
^/(?!ignoreme|ignoreme2|ignoremeN)([a-z0-9]+)$
Note: There's only only one capturing expression: ([a-z0-9]+)
.
This should do it:
^/b([a-z0-9]+)b(?<!ignoreme|ignoreme2|ignoreme3)
You can add as much ignored words as you like, here is a simple PHP implementation:
$ignoredWords = array('ignoreme', 'ignoreme2', 'ignoreme...');
preg_match('~^/b([a-z0-9]+)b(?<!' . implode('|', array_map('preg_quote', $ignoredWords)) . ')~i', $string);
As you want to exclude both words, you need a conjuction:
^/(?!ignoreme$)(?!ignoreme2$)[a-z0-9]+$
Now both conditions must be true (neither ignoreme nor ignoreme2 is allowed) to have a match.
链接地址: http://www.djcxy.com/p/76696.html上一篇: 正则表达式的帮助包括和排除
下一篇: 一个正则表达式,用于排除单词/字符串