Regex para la coincidencia de rutas en Express

No soy muy bueno con expresiones regulares, así que quiero asegurarme de estar haciendo esto correctamente. Digamos que tengo dos rutas muy similares, /discussion/:slug/ y /page/:slug/ . Quiero crear una ruta que coincida con estas dos páginas.

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

¿Es esta la forma correcta de hacerlo? En este momento solo estoy creando dos rutas separadas.

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

app.get('/:type(discussion|page)/:id', ...) funciona

Debería usar un objeto de expresión regular javascript literal, no una cadena, y @sarnold es correcto para que desee parentescos para la alternancia. Los corchetes son para clases de personajes.

 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); 

El (.+) Significa que debe haber una babosa de al menos 1 carácter o que esta ruta no coincidirá. Usa (.*) Si quieres que coincida con una babosa vacía también.