Regex para dirección IPv4

Usa /^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/ para comprobar que una cadena completa es una dirección IPv4 válida. Cada ejemplo de abajo está probado contra el patrón, y puedes abrirlo en el Probador de Regex con las muestras ya cargadas.

Actualizado el

/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/
Abrir en el Probador de Regex
EntradaResultado
192.168.1.1✓ Coincide
8.8.8.8✓ Coincide
255.255.255.255✓ Coincide
0.0.0.0✓ Coincide
256.1.1.1✗ No coincide
192.168.1✗ No coincide
01.2.3.4✗ No coincide
1.2.3.4.5✗ No coincide
192.168.1.1/24✗ No coincide

Cómo funciona el patrón

ParteSignificado
25[0-5]250–255
2[0-4]\d200–249
1\d\d100–199
[1-9]?\d0–99, sin cero inicial
(?:…\.){3}Tres números, cada uno seguido de un punto
(?:…)$El cuarto número, y después el final de la cadena

Ejemplos de código

JavaScript

const re = /^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)', value))

PHP

preg_match('/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/', $value) === 1;

Notas y limitaciones

Cada octeto se comprueba que esté entre 0 y 255, algo que un patrón simple \d{1,3} no puede hacer. Los ceros iniciales se rechazan porque algunos sistemas los interpretan como octal. Para aceptar la notación CIDR, añade (?:\/(?:3[0-2]|[12]?\d))? antes de $.

Preguntas frecuentes

¿Cuál es la regex para dirección IPv4?
/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/ — coincide con la cadena completa. Consulta la tabla de arriba para ver qué hace cada parte.
¿Qué ejemplos coinciden?
De los ejemplos probados, estos coinciden: 192.168.1.1, 8.8.8.8, 255.255.255.255, 0.0.0.0. Los demás no.
¿Cómo pruebo esta regex?
Haz clic en «Abrir en el Probador de Regex»: el patrón, las banderas y el texto de ejemplo se cargan automáticamente, y las coincidencias se resaltan mientras editas.