Listo (Ctrl + Enter para ejecutar) Bootcamp Fullstack »
app.js
Tab = 4 espacios
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
Vista Previa
Consola Virtual JavaScript