使用正则表达式路由参数以捕获所有内容

时间:2018-06-30 13:30:55

标签: node.js express

在我的Node.js(+ express)应用程序中,我希望收到以下请求:

GET /images/foo1/id500/abc5
GET /images/foo2/id540
GET /images/id500/foo800

换句话说,请求将具有常量前缀/images/和我需要捕获的一些其他随机路径。

app.get("/images/:foo(*)", (req, res) => {
  console.log(req.params.foo);
  res.send(req.params.foo);
});

上面的代码完全符合我的要求,但是如果我输入“。”。 (任何字符)到正则表达式,然后它将停止工作...

以下代码不起作用:

app.get("/images/:foo(.*)", (req, res) => {
  console.log(req.params.foo);
  res.send(req.params.foo);
});

:foo(.*):foo(*)正常工作时,为什么使用:foo(\\w*)并不能达到预期的效果?

1 个答案:

答案 0 :(得分:0)

如果要匹配正则表达式,则必须使用regexp匹配。区别在于:

 app.get(/a/, (req, res) => { // Matches anything with an “a” in it, such as /xax.
 app.get('a', (req, res) => { // matches exactly /a

您可以将示例重写为正则表达式,切记不要使用/

app.get(/\/images\/:foo(.*)/, (req, res) => {