正则expression式在Express中进行路由匹配

我用正则expression式不太好,所以我想确保我正确地做到了这一点。 比方说,我有两个非常相似的路线, /discussion/:slug//page/:slug/ 。 我想创build一个匹配这两个页面的路线。

 app.get('/[discussion|page]/:slug', function(req, res, next) { ...enter code here... }) 

这是正确的方法吗? 现在我只是创build两个单独的路线。

 someFunction = function(req, res, next) {..} app.get('/discussion/:slug', someFunction) app.get('/page/:slug', someFunction) 

app.get('/:type(discussion|page)/:id', ...)起作用

你应该使用一个文字的JavaScript正则expression式对象,而不是一个string,@sarnold是正确的,你想要parens交替。 方括号用于字符类。

 const express = require("express"); const app = express.createServer(); app.get(/^\/(discussion|page)\/(.+)/, function (req, res, next) { res.write(req.params[0]); //This has "discussion" or "page" res.write(req.params[1]); //This has the slug res.end(); }); app.listen(9060); 

(.+)表示必须存在至less一个字符的slu or,否则该路线将不匹配。 使用(.*)如果你想要它匹配一个空的slu as。