Saltar al contenido principal
eLearner.app
Módulo 8 · Lección 3 de 431/32 en el curso~12 min
Lecciones del módulo (3/4)

Extraer URLs e IPs

En texto libre (logs, artículos, volcados de datos) es muy común querer extraer URLs y direcciones IP. Veamos patrones robustos para ambos.

URLs http/https

Code
Pattern: https?:\/\/[\w.-]+(?:\:\d+)?(?:\/[^\s]*)?
  • https?:\/\/ -- esquema, con la s opcional.
  • [\w.-]+ -- host (dominio, subdominios, posiblemente localhost).
  • (?:\:\d+)? -- puerto opcional.
  • (?:\/[^\s]*)? -- ruta opcional, hasta el primer espacio en blanco.

Captura https://example.com, http://localhost:3000/api/users, https://docs.dev/path/sub.

IPv4

Una IPv4 consta de 4 octetos decimales separados por puntos:

Code
Pattern: \b(?:\d{1,3}\.){3}\d{1,3}\b

Versión "suficientemente buena": también acepta valores inválidos como 999.999.999.999. Para la versión estricta necesitarías una alternancia de rangos (25[0-5]|2[0-4]\d|[01]?\d\d?), que es mucho más larga.

Code
Pattern (estricto): \b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\b

Precisión frente a brevedad

Coincidir con URLs o IPs requiere equilibrar la tolerancia del patrón. Un validador estricto de IP verifica que ningún octeto supere 255. Un extractor práctico, por otro lado, suele buscar patrones simplificados y delega la validación fina a código dedicado.

Pruébalo tú

Ejercicio#regex.m8.l3.e1
Intentos: 0Cargando...

Encuentra cada URL http o https en el texto. Esquema + host + ruta opcional.

Cargando editor...
Mostrar pista

https? para la s opcional, [\w.-]+ para el dominio y un grupo (?:\/[^\s]*)? para la ruta opcional.

Solución disponible después de 3 intentos

Ejercicio de repaso

Ejercicio#regex.m8.l3.e2
Intentos: 0Cargando...

Encuentra cada IPv4 (4 octetos decimales separados por puntos). Versión permisiva, sin comprobación de 0-255.

Cargando editor...
Mostrar pista

Usa (?:\d{1,3}\.){3} para repetir 'octeto + punto' 3 veces, luego \d{1,3} para el último.

Solución disponible después de 3 intentos

Desafío adicional

Ejercicio#regex.m8.l3.e3
Intentos: 0Cargando...

Encuentra todas las direcciones IPv4 en formato `X.X.X.X` (compuestas por cuatro números de 1 a 3 dígitos separados por puntos).

Cargando editor...
Mostrar pista

Usa \b para forzar límites, (?:\d{1,3}\.){3} para repetir el octeto y el punto tres veces, y finalmente \d{1,3}.

Solución disponible después de 3 intentos