1
// 1. Parseo de URLs con Grupos Nombrados y Grupos de No-Captura
const urlPatron = /^(?<protocolo>https?):\/\/(?<host>[\w.-]+)(?::(?<puerto>\d+))?(?<ruta>\/[^\s?]*)?(?:\?(?<query>[^\s#]+))?$/;
const muestraUrl = "https://academia.kilopolis.com:443/cursos/javascript?filtro=avanzado";
const resultadoUrl = muestraUrl.match(urlPatron);
console.log("--- 1. Desestructuración de Grupos Nombrados ---");
if (resultadoUrl && resultadoUrl.groups) {
const { protocolo, host, puerto, ruta, query } = resultadoUrl.groups;
console.log("Protocolo:", protocolo);
console.log("Host: ", host);
console.log("Puerto: ", puerto || "80 / 443 (por defecto)");
console.log("Ruta: ", ruta);
console.log("Query: ", query);
}
// 2. Referencias Retrospectivas con \k<nombre> para etiquetas HTML
console.log("\n--- 2. Validación de Etiquetas Emparejadas ---");
const patronTag = /<(?<tag>[a-z1-6]+)>(.*?)<\/\k<tag>>/i;
const pruebaCorrecta = "<h1>Título Principal</h1>";
const pruebaErronea = "<h2>Título Descuadrado</h3>";
console.log("<h1>...</h1> es válido? ", patronTag.test(pruebaCorrecta)); // true
console.log("<h2>...</h3> es válido? ", patronTag.test(pruebaErronea)); // false
Haz clic para editar este código