我有路线:
app.get('/:id', routes.action);
它工作正常,但我需要跳过robot.txt
和其他(人......)
我创建正则表达式(只有字符或数字):
/^[a-z]{0,10}$/
我如何才能仅匹配与此正则表达式匹配的ID?
答案 0 :(得分:18)
将正则表达式放在括号中,如下所示:
app.get('/:id(^[a-z]{0,10}$)', routes.action);
答案 1 :(得分:4)
如果您想避免匹配物理存在的静态文件的路由,只需在调用static
之前放置app.router
中间件。
然后会传递静态文件(例如robots.txt),这些调用将无法通过您的路由。
问题解决了; - )。
答案 2 :(得分:2)
在内部,您提供给Express路由器的字符串无论如何都会转换为正则表达式。如果您查看the code,就可以看到您可以直接传递正则表达式。
app.get(/^\/[a-z]{0,10}$/, routes.action);
The docs也有例子。
答案 3 :(得分:0)
如果您需要多条路线:
app.routes.get
是一个包含所有get路由的数组。 您可以更改需要更改的路由的正则表达式对象。