Regex Tester

Regex de Dirección IP: Coincidencia de IPv4 e IPv6

Patrones regex para coincidir y validar direcciones IPv4 (192.168.1.1) e IPv6. Incluye notación CIDR y detección de redes privadas.

100% del lado del cliente. Tus datos nunca salen de tu navegador.

//gm
7 coincidencias
192.168.1.1 10.0.0.255 172.16.0.1 255.255.255.0 8.8.8.8 999.999.999.999 256.1.1.1 1.2.3 0.0.0.0 127.0.0.1
Detalles de Coincidencia

Herramientas Relacionadas

Regex de Dirección IPv4

El 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).

Desglose del Patron

Cada octeto usa una alternancia de tres vias para forzar el rango 0-255:

Rama de alternanciaRango cubiertoEjemplos de coincidencia
25[0-5]250-255250, 255
2[0-4]\d200-249200, 214, 249
[01]?\d\d?0-1990, 99, 192

Por qué Falla el Patron Simple

\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.

Notación CIDR

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).

Patron IPv6

Para la notación completa estándar de 8 grupos:

([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}

Detección de Redes Privadas

Los tres rangos IPv4 privados definidos por RFC 1918:

RangoCIDRPrefijo regex
Clase A privada10.0.0.0/8^10\.
Clase B privada172.16.0.0/12`^172.(1[6-9]
Clase C privada192.168.0.0/16^192\.168\.

Cuando Omitir el Regex

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