我有一个正则表达式如下:
^/[a-z0-9]+$
这匹配 /hello 或 /hello123 等字符串 .
/hello
/hello123
但是,我希望它排除一些字符串值,如 /ignoreme 和 /ignoreme2 .
/ignoreme
/ignoreme2
我尝试了一些变种,但似乎无法开始工作!
我最近的微弱尝试是
^/(((?!ignoreme)|(?!ignoreme2))[a-z0-9])+$
任何帮助将不胜感激:-)
这是另一种方式:(使用negative look-ahead):
^/(?!ignoreme|ignoreme2|ignoremeN)([a-z0-9]+)$
注意:只有一个捕获表达式: ([a-z0-9]+) .
([a-z0-9]+)
如果你想排除这两个词,你需要一个结合:
^/(?!ignoreme$)(?!ignoreme2$)[a-z0-9]+$
现在两个条件必须为真(无论是ignoreme还是ignoreme2都不允许)才能匹配 .
这应该这样做:
^/\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);
3 回答
这是另一种方式:(使用negative look-ahead):
注意:只有一个捕获表达式:
([a-z0-9]+)
.如果你想排除这两个词,你需要一个结合:
现在两个条件必须为真(无论是ignoreme还是ignoreme2都不允许)才能匹配 .
这应该这样做:
您可以根据需要添加尽可能多的忽略单词,这是一个简单的PHP实现: