1
// Función canónica para escapar metacaracteres (Recomendación MDN)
function escapeRegExp(cadena) {
// $& representa la coincidencia encontrada completa que será reemplazada por \$&
return cadena.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
// Catálogo de productos simulado
const catalogo = [
"Plan Hosting Estándar ($9.99/mes)",
"Plan Hosting Pro ($19.99/mes)",
"Certificado SSL Comodo (Gratis)",
"Node.js Backend Microservicios [v20.x]",
"Base de Datos MySQL + Redis Cache"
];
// Simulamos que el usuario busca un término con metacaracteres reservados:
const busquedaUsuario1 = "($9.99/mes)";
const busquedaUsuario2 = "[v20.x]";
function buscarProducto(termino) {
// Escapamos los símbolos peligrosos: '(' '$' '.' '/' ')'
const terminoSeguro = escapeRegExp(termino);
const regex = new RegExp(terminoSeguro, 'i');
return catalogo.filter(item => regex.test(item));
}
console.log("--- Búsqueda de '$9.99/mes' ---");
console.log("Término escapado:", escapeRegExp(busquedaUsuario1));
console.log("Resultados:", buscarProducto(busquedaUsuario1));
console.log("\n--- Búsqueda de '[v20.x]' ---");
console.log("Término escapado:", escapeRegExp(busquedaUsuario2));
console.log("Resultados:", buscarProducto(busquedaUsuario2));
Haz clic para editar este código