10

我有路线:

app.get('/:id', routes.action);

它工作正常,但我需要跳过robot.txt和其他(人类......)我创建正则表达式(只有字符或数字):

/^[a-z]{0,10}$/

我如何只能路由与此正则表达式匹配的 ID?

4

4 回答 4

18

将正则表达式放在括号中,如下所示:

app.get('/:id(^[a-z]{0,10}$)', routes.action);
于 2012-09-08T19:59:38.767 回答
4

如果要避免路由匹配物理存在的静态文件,只需将static中间件放在对app.router.

然后静态文件(如 robots.txt)将被传递,这些调用将不会通过您的路由。

问题解决了 ;-)。

于 2012-09-29T13:30:07.467 回答
2

在内部,您提供给 Express 路由器的字符串无论如何都只是转换为正则表达式。如果你看一下代码,你会发现你可以直接传递一个正则表达式。

app.get(/^\/[a-z]{0,10}$/, routes.action);

文档也有示例。

于 2012-09-08T20:14:16.107 回答
0

如果您需要多条路线:

app.routes.get 

是一个包含所有获取路线的数组。您可以更改需要更改的路由的正则表达式对象。

于 2014-03-20T09:52:37.327 回答