regex - solo - Validar una IP con expresiones regulares
simplificar expresiones regulares online (5)
Necesito validar un rango de IP que está en el formato 000000000 a 255255255 sin ningún delimitador entre los 3 grupos de números. Cada uno de los tres grupos en los que se basa la IP final debe ser 000 (sí, 0 acolchado) a 255.
Como esta es mi primera entrada de stackoverflow, sea indulgente si no sigo la etiqueta correctamente.
Esta es una pregunta bastante común. Aquí hay una buena página de introducción en expresiones regulares, que tiene este caso como ejemplo. Incluye los períodos, pero puede editarlos con la suficiente facilidad.
Yo personalmente no usaría expresiones regulares para esto. Creo que es más fácil garantizar que la cadena consta de 9 dígitos, dividir la cadena en 3 grupos de números de 3 dígitos y luego verificar que cada número esté entre 0 y 255, inclusive.
Si realmente insistes en la expresión regular, entonces podrías usar algo como esto:
"([0-1][0-9][0-9]|2[0-4][0-9]|25[0-5]){3}"
La expresión comprende una alternancia de tres términos: los primeros partidos 000-199
, el segundo 200-249
, el tercero 250-255
. El {3}
requiere el partido exactamente tres veces.
^([01]/d{2}|2[0-4]/d|25[0-5]){3}$
Que se descompone en las siguientes partes:
- 000-199
- 200-249
- 250-255
Si decides que quieres 4 octetos en lugar de 3, simplemente cambia los últimos {3}
a {4}
. Además, también debe conocer IPv6.
para hacer coincidir exclusivamente un uso válido de la dirección IP
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}
en lugar de
([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])(([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])){3}
porque muchos motores regex coinciden con la primera posibilidad en la secuencia OR
Puedes probar tu motor regex con: 10.48.0.200
/b/d{1,3}/./d{1,3}/./d{1,3}/./d{1,3}/b
Uso este RegEx para buscar todas las direcciones IP en el código de mi proyecto