NodeJS 从expressjs路由路径中排除单词

fcg9iug3  于 2023-03-22  发布在  Node.js
关注(0)|答案(3)|浏览(101)

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

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

我尝试了以下方法,但不起作用。

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

另外,我尝试在这里使用正则表达式,但是node给了我一个错误,说它期望回调而不是正则表达式。
注意:显然.use也不能捕获group,但在我的例子中这不是必需的,我只需要它匹配除了几个单词之外的所有内容。

t3irkdon

t3irkdon1#

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

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();
  }
});
siv3szwd

siv3szwd2#

尝试使用此:

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

agxfikkp3#

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

相关问题