Expresiones regulares para URLs HTTP

Clase 14 de 29Curso de Expresiones Regulares

Resumen

Dominar expresiones regulares para URLs es clave en desarrollo web. Aquí verás cómo construir una regex clara y práctica para detectar HTTP/HTTPS, dominios, subdominios y TLD, y cómo extenderla para la ruta completa sin espacios. El enfoque es simple, directo y útil para extraer URLs o preparar un crawler/spider que recorra HTMLs.

¿Cómo validar URLs con expresiones regulares?

Empezamos por lo esencial: el protocolo y su forma opcional segura. Luego avanzamos al dominio con posibles subdominios y terminamos restringiendo el TLD.

¿Qué partes obligatorias tiene el protocolo?

  • Usar HTTP o HTTPS con el cuantificador de opción: https?.
  • Los dos puntos no requieren escape: :.
  • El slash y el backslash deben escaparse en muchas implementaciones: / y \.

Ejemplo del inicio del patrón:

^https?:\/\/

¿Cómo definimos el dominio y subdominios?

  • Emplear una clase de caracteres de palabra para etiquetas del dominio: \w.
  • Repetir la clase para permitir subdominios separados por punto: (?:\w+.)+.
  • Incluir el punto literal para avanzar “hasta el primer slash”.

Patrón para dominio con subdominios:

^https?:\/\/(?:\w+\.)+

¿Cómo restringimos el TLD?

  • El TLD se define como caracteres de palabra con longitud entre 2 y 5: \w{2,5}.
  • No se contempla TLD de una sola letra.

Cierre del dominio con TLD:

^https?:\/\/(?:\w+\.)+\w{2,5}

¿Cómo capturar la ruta sin espacios en blanco?

Tras el dominio, la URL completa puede incluir una ruta. Primero se hace opcional el slash inicial; después, se suma el resto evitando espacios en blanco.

  • Slash opcional tras el TLD: /?.
  • Para “lo que sigue”, evitar espacios con \S* en lugar de .*.
  • Así, no se rompen coincidencias por espacios alrededor de la URL.

Regex final sugerida para URLs HTTP/HTTPS con dominio, subdominios, TLD de 2–5 y ruta sin espacios:

^https?:\/\/(?:\w+\.)+\w{2,5}\/?\S*

Puntos clave que aplicarás al construir el patrón:

  • Cuantificadores: ? para opcional, + para una o más repeticiones, {2,5} para rangos.
  • Clases de caracteres: \w para “caracter de palabra”; punto literal . para separar etiquetas.
  • Escapes necesarios: / y \.
  • Evitar espacios: usar \S (no espacio en blanco) cuando el texto a la derecha no debe contenerlos.

¿Para qué te sirve en extracción de enlaces?

Con esta regex podrás ubicar todas las URLs válidas en un texto y, desde allí, lanzar un crawler que recorra links y construya un árbol de navegación básico.

Aplicaciones prácticas que salen directo del patrón:

  • Extraer URLs desde archivos de texto o HTMLs.
  • Detectar links HTTP/HTTPS sin importar el dominio.
  • Preparar un spider inicial que siga enlaces y registre destinos.
  • Reutilizar el bloque de “dominio” para validar correos en un siguiente paso.

Habilidades y conceptos reforzados:

  • Protocolo con opción segura: https?.
  • Dominio y subdominios basados en clases y repeticiones.
  • TLD acotado a 2–5 caracteres de palabra.
  • Rutas sin espacios con \S*.
  • Escapado de símbolos especiales como slash y backslash.
  • Construcción progresiva de expresiones regulares simples y efectivas.

¿Te gustaría que veamos cómo adaptar este mismo bloque de dominio para validar correos y casos límite? Comparte tus dudas y ejemplos en los comentarios.