/ / Regex para la coincidencia de rutas en Express - regex, node.js, express

Regex para la coincidencia de rutas en Express - regex, node.js, express

No soy muy bueno con las expresiones regulares, así que quiero asegurarme de que estoy 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? Ahora mismo estoy creando dos rutas separadas.

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

Respuestas

99 para la respuesta № 1

app.get("/:type(discussion|page)/:id", ...) trabajos


54 para la respuesta № 2

Debe usar un objeto de expresión regular de javascript literal, no una cadena, y @sarnold es correcto que desea parens para alternar. Los corchetes son para clases de caracteres.

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

los (.+) significa que debe haber una bala de al menos 1 carácter o esta ruta no coincidirá. Utilizar (.*) si quieres que coincida con una babosa vacía también.