Patrones regex para coincidir y validar direcciones IPv4 (192.168.1.1) e IPv6. Incluye notación CIDR y detección de redes privadas.
10.0.0.255índice 12172.16.0.1índice 23255.255.255.0índice 348.8.8.8índice 480.0.0.0índice 88127.0.0.1índice 96El patrón de arriba solo coincide con direcciones IPv4 válidas. Coincide con 192.168.1.1, 10.0.0.255, 172.16.0.1, 255.255.255.0, 8.8.8.8, 0.0.0.0 y 127.0.0.1. Rechaza 999.999.999.999, 256.1.1.1 y 1.2.3 (solo tres octetos).
Cada octeto usa una alternancia de tres vias para forzar el rango 0-255:
| Rama de alternancia | Rango cubierto | Ejemplos de coincidencia |
|---|---|---|
25[0-5] |
250-255 | 250, 255 |
2[0-4]\d |
200-249 | 200, 214, 249 |
[01]?\d\d? |
0-199 | 0, 99, 192 |
\d+\.\d+\.\d+\.\d+ es lo primero que la mayoría intenta. Falla de dos maneras:
Coincide con cadenas que no son direcciones IP válidas. 999.999.999.999 coincide porque \d+ no impone un limite numérico.
Puede producir falsos positivos dentro de cadenas más largas. Sin limites de palabra, el patrón coincide con partes parciales en cadenas de versión, tiempos Unix y números decimales.
Para coincidir también con bloques CIDR como 192.168.1.0/24, agrega (\/([0-9]|[1-2]\d|3[0-2]))? al final del patrón base (antes del \b final).
Para la notación completa estándar de 8 grupos:
([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}
Los tres rangos IPv4 privados definidos por RFC 1918:
| Rango | CIDR | Prefijo regex |
|---|---|---|
| Clase A privada | 10.0.0.0/8 |
^10\. |
| Clase B privada | 172.16.0.0/12 |
`^172.(1[6-9] |
| Clase C privada | 192.168.0.0/16 |
^192\.168\. |
Para validar una única dirección IP enviada por el usuario, usa las funciones incorporadas del lenguaje:
import ipaddress
try:
ipaddress.ip_address("192.168.1.1")
# válido
except ValueError:
# invalido
const net = require('net');
net.isIPv4('192.168.1.1'); // true
net.isIPv4('999.1.1.1'); // false
import "net"
ip := net.ParseIP("192.168.1.1")
// ip != nil significa válido
Nothing you paste leaves this tab. Every tool runs entirely in your browser — no upload, no server, no account.