ExpressJS的路线正则expression式:如何将一个参数与一条路线以外的所有东西进行匹配

我有一个路由定义这样的code参数:

 app.get('/:code([a-zA-Z]{3})', codeHandler); 

它匹配三个字母的所有代码,并且工作正常。 但我想改变它以匹配除一个之外的每个代码。 例如,可以说我想排除“cct”。 我试图使用负面的前瞻从路由通过修改上述匹配程序行使“cct”像这样:

 app.get('/:code((?!cct)[a-zA-Z]{3})', codeHandler); 

但现在这条路线不匹配任何东西。 即使以前被捕获的有效代码现在也不匹配。 我不知道我在做什么错。

我认为最简单的方法就是让你的正则expression式保持原样,但是在codeHandler函数里有一些东西:

 if(req.url == '/cct') return next(); 

然后快递将移动到下一个路线处理程序。 如果你已经为'/ cct'定义了一个,那么它会去那个 – 如果没有,将会导致一个404错误,因为找不到这个页面。

尝试这个:

 app.get(/^\/((?!cct)[a-zA-Z]{3})$/, (req,res) => { console.log(req.params[0]); })