Me he encontrado con un problema extraño. Cuando trato de probar si path-to-regexp coincidirá con una ruta determinada, no obtendré un resultado cuando se espera, si paso la cadena de entrada de una variable. Pero si codifico la cadena directamente (es decir, la misma cadena que se imprime en la consola al imprimir la variable), ¿funciona?
¿Alguna idea de lo que podría estar pasando aquí?
Construyo un pequeño prototipo que puedes probar.
Y aquí está el código de ejemplo:
import { match } from "path-to-regexp"; const esc = require("./escapeRegexInPath"); const pattern = new RegExp("[0-9]*"); // Does the pattern match "123" console.log({ patternTest: pattern.test("123") }); // => {patternTest: true} // The escape function will escape special characters const escapedRegex = esc(pattern); console.log({ escapedRegex }); // => {escapedRegex: "[0-9]\*"} // This matcher is passed the escaped regex as a variable const matcher = match(`:entityId(${escapedRegex})`); // And it fails to match anything with input "123" console.log({ matcher: matcher("123") }); // {matcher: false} // This matcher is passed a hardcoded regex // And it succesfully matches with input "123" const matcher2 = match(`:entityId([0-9]\*)`); console.log({ matcher2: matcher2("123") }); // => {matcher2: Object}