Solución

@estouchedisindo·21/6/2026TypeScript
solution.tsTypeScript
type ParsedURL = { protocol: string; host: string; path: string };

export function parseUrl(url: string): ParsedURL {
  // Usa una expresión regular con grupos de captura para extraer protocolo, host y path
  const urlPattern = /^(https?):\/\/([^\/\s]+)(\/[^\s]*)?$/;
  // REGEX explicado:
  // ^ --> empieza por lo siguiente
  // Grupos de captura: 
  // grupo 1, PROTOCOL
  // --> https?: empieza por http y la 's' es opcional
  // :\/\/, separador, sin capturarlo --> :// (dos puntos y doble barra inclinada)
  // grupo 2, HOST 
  // --> [^\/\s]+: cualquier caracter que no sea una barra / o un espacio; una vez o más
  // grupo 3, PATH:
  // (\/[^\s]*)? --> empieza con barra inclinada (/) y sigue cualquier cosa que
  // que NO sea un espacio. Este grupo es opcional, ?
  // $ --> terminó con lo anterior

  const matches = url.match(urlPattern);
  console.log(matches);
  // [
  // "https://example.com/path/to/page",
  // "https","example.com",
  // "/path/to/page"
  // ]

  // ESCUDO, guard, por si no encuentra nada:
  if(!matches) {
    return { protocol: '', host: '', path: '' };
  }
  
  // matches[3] podría ser 'undefined', ya que es opcional => ??
  return { protocol: matches[1], host: matches[2], path: matches[3] ?? ''};
}
0respuestas
Respuestas

Aún no hay respuestas

¡Sé el primero en responder!

Escribir un comentario

Recuerda ser amable. Estás comentando la solución de otra persona. Comparte tu perspectiva de forma constructiva y respetuosa.

Debes iniciar sesión para publicar un comentario.