我有一个正则表达式如下:
^/[a-z0-9]+$
Run Code Online (Sandbox Code Playgroud)
这匹配字符串,如/hello或/hello123.
但是,我希望它排除一些字符串值,如/ignoreme和/ignoreme2.
我尝试了一些变种,但似乎无法正常工作!
我最近的微弱尝试是
^/(((?!ignoreme)|(?!ignoreme2))[a-z0-9])+$
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激:-)
Set*_*eth 340
这是另一种方式:(使用否定预测):
^/(?!ignoreme|ignoreme2|ignoremeN)([a-z0-9]+)$
Run Code Online (Sandbox Code Playgroud)
注意:只有一个捕获表达式:([a-z0-9]+).
Ali*_*xel 40
这应该这样做:
^/\b([a-z0-9]+)\b(?<!ignoreme|ignoreme2|ignoreme3)
Run Code Online (Sandbox Code Playgroud)
您可以根据需要添加尽可能多的忽略单词,这是一个简单的PHP实现:
$ignoredWords = array('ignoreme', 'ignoreme2', 'ignoreme...');
preg_match('~^/\b([a-z0-9]+)\b(?<!' . implode('|', array_map('preg_quote', $ignoredWords)) . ')~i', $string);
Run Code Online (Sandbox Code Playgroud)
小智 30
这将从搜索结果中排除所有包含ignoreme的行。当连续有任何字符时它也能很好地工作
^((?!ignoreme).)*$
Run Code Online (Sandbox Code Playgroud)
Gum*_*mbo 17
如果你想要排除这两个词,你需要一个结合:
^/(?!ignoreme$)(?!ignoreme2$)[a-z0-9]+$
Run Code Online (Sandbox Code Playgroud)
现在两个条件必须为真(无论是ignoreme还是ignoreme2都不允许)才能匹配.