从expressjs路径路径中排除单词

时间:2014-07-05 00:17:58

标签: node.js express

有没有办法让它与/api/assets不匹配?

router.use("/:group", groupRouter);

我尝试了以下但是没有用。

router.use("/:group(!(api|assets))", groupRouter);

另外,我尝试在这里使用正则表达式,但节点给了我一个错误,说它期望回调而不是正则表达式。

注意:显然.use也没有捕获group,但在我的情况下这不是必需的。我只需要它来匹配除了几个单词之外的所有内容。

2 个答案:

答案 0 :(得分:4)

我使用嵌套中间件来解决这个问题。

router.use("/:group", function(req, res, next) {
  var excludes = ["api", "assets"];
  if (excludes.indexOf(req.params.group) !== -1) return next();
  else {
    router.use("/"+req.params.group, groupRouter);
    next();
  }
});

答案 1 :(得分:0)

尝试使用此功能:

router.use("/:group((?!(api|assets)\w+))", groupRouter);