【问题标题】:Express route regex exception快速路由正则表达式异常
【发布时间】:2018-08-29 19:39:49
【问题描述】:
我知道这可能是一个愚蠢的问题,但我不能让它工作,我试图匹配任何不匹配单词的路由,例如 api(排除 /api/*)但我不能让它工作:
'/^(?=\/).(?!api\/).*$'
这不起作用,然后我尝试了这个站点:http://forbeslindesay.github.io/express-route-tester/ 只是为了测试我匹配 / 并给我这个代码:
/^\/?$/i
然后我尝试了 express 但它不匹配/
Cannot GET /
那我猜代码有问题,而不是正则表达式,你有什么提示吗?
app.get('/^\/?$/i', function(req, res) {
【问题讨论】:
标签:
javascript
node.js
regex
express
routes
【解决方案1】:
在这里使用正则表达式似乎不是正确的方法,您似乎更想使用参数化路由来处理受保护的路由。
app.get('/:directory/:page', function(req, res, next){
if(req.params.directory.toLowerCase() == 'api') res.redirect('/') //or whatever you want it to do
else {
//whatever your default action is
}
}
如果您想排除几个并以相同的方式处理它们,您可以让您的if 语句使用正则表达式:
if(/^(api|other_directory|whatever_else)$/i.test(req.params.directory)) res.redirect('/')