我有一个定义类似这样的路线来捕捉code
param:
app.get('/:code([a-zA-Z]{3})', codeHandler);
它匹配所有三个字母长的代码,并且工作正常。但我想改变它以匹配除一个以外的每个代码。例如,假设我要排除" cct"。我尝试使用否定前瞻来解除" cct"从路线到 像这样修改上面的匹配器:
app.get('/:code((?!cct)[a-zA-Z]{3})', codeHandler);
但现在这条路线无法匹敌。即使过去曾经被捕获的有效代码现在也不匹配。我不知道我做错了什么。
答案 0 :(得分:1)
我认为最简单的方法是保留你的正则表达式,但是在codeHandler函数里面有以下几点:
if(req.url == '/cct') return next();
然后express将继续前进到下一个路由处理程序。如果您为' / cct'定义了一个它将转到那一个 - 否则会导致404错误,因为找不到页面。
答案 1 :(得分:0)
试试这个:
app.get(/^\/((?!cct)[a-zA-Z]{3})$/, (req,res) => {
console.log(req.params[0]);
})