Buscando una cadena para pasar a String # matches (String) que coincidirá con IPv4, y otra que coincida con IPv6.¿Cuáles son las expresiones regulares de Java para hacer coincidir cadenas de IPv4 e IPv6?
Respuesta
public static final String IPV4_REGEX = "\\A(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z";
public static final String IPV6_HEX4DECCOMPRESSED_REGEX = "\\A((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?) ::((?:[0-9A-Fa-f]{1,4}:)*)(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z";
public static final String IPV6_6HEX4DEC_REGEX = "\\A((?:[0-9A-Fa-f]{1,4}:){6,6})(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z";
public static final String IPV6_HEXCOMPRESSED_REGEX = "\\A((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)::((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)\\z";
public static final String IPV6_REGEX = "\\A(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\\z";
Obtuve estos de algunos blog. Alguien bueno con expresiones regulares debería poder generar una expresión regular única para todos los tipos de direcciones IPv6. En realidad, supongo que podrías tener una expresión regular que coincida con IPv4 e IPv6.
Sí, sin duda, alguien debe llegar a una expresión regular única que abarca todo, son muy, muy cortas, como lo son. –
Gracias! Estos son un buen punto de partida. Pero he encontrado que IPV6_HEXCOMPRESSED_REGEX aceptará "1 :: 2: 3: 4: 5: 6: 7: 8", lo cual no es válido ya que no puedes tener más de 8 agrupaciones y :: implica más agrupaciones comprimidas . – gusterlover6
Aquí es una expresión regular para que coincida con las direcciones IPv4:
\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
Tendrá que escapar de las barras invertidas cuando se especifica como una cadena literal en Java:
"\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b"
Otra buena opción para el procesamiento IPs debe usar las clases de Java Inet4Address y Inet6Address, que pueden ser útiles de varias maneras, una de las cuales es determinar la validez de la dirección IP.
Sé que esto no responde la pregunta directamente, pero creo que vale la pena mencionarla.
La expresión regular permite el uso de ceros a la izquierda en las partes de IPv4.
Algunas distribuciones de Unix y Mac convierten esos segmentos en octals.
Sugiero usar 25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d
como un segmento IPv4.
Regexes para ipv6 puede ser realmente complicado cuando se consideran direcciones con ipv4 incrustado y direcciones que están comprimidas.
The open-source IPAddress Java library validará todas las representaciones estándar de IPv6 e IPv4 y también es compatible con la longitud del prefijo (y la validación de tal). Descargo de responsabilidad: soy el gerente de proyecto de esa biblioteca.
Código ejemplo:
try {
IPAddressString str = new IPAddressString("::1");
IPAddress addr = str.toAddress();
} catch(AddressStringException e) {
//e.getMessage has validation error
}
- 1. Función de PHP para validar IPv4 e IPv6 usando regex
- 2. ¿Cómo hacer coincidir un largo con expresiones regulares de Java?
- 3. Cómo admitir conexiones IPv4 e IPv6
- 4. Sintaxis de expresiones regulares para "hacer coincidir nada"?
- 5. de expresiones regulares para hacer coincidir el número y espacios
- 6. Base de datos o estructura adecuada para hacer coincidir cadenas con patrones de expresiones regulares
- 7. Java - extraer cadenas con expresiones regulares
- 8. Como apoyar IPv4 y IPv6 en Java
- 9. Cómo hacer coincidir cadena entre comillas usando expresiones regulares
- 10. ¿Cuáles son algunas de las expresiones regulares más útiles para los programadores?
- 11. Cálculos de red IPv4/IPv6 y validación para Java?
- 12. Android e IPv6 en Java
- 13. Expresión regular para hacer coincidir las URL en Java
- 14. Cambio de IPv4 a IPv6: ¿Cuáles son sus efectos en el desarrollo web?
- 15. ¿Cómo puedo hacer coincidir contra varias expresiones regulares en Perl?
- 16. ¿Cómo hacer coincidir números entre X e Y con expresiones regulares?
- 17. expresiones regulares para el contenido entre e incluyendo las parenthees
- 18. Interconversión de IPv6 a IPv4 en C#
- 19. Problema Convertir ipv6 a ipv4
- 20. Cómo hacer coincidir solo cadenas que no contienen un punto (usando expresiones regulares)
- 21. expresiones regulares para hacer coincidir opcionalmente al final de una cadena ($ opcional)
- 22. expresiones regulares Las expresiones para todos los símbolos no alfanuméricos
- 23. ¿Qué son buenas expresiones regulares?
- 24. Libcurl: force ipv4 o ipv6
- 25. Cómo usar expresiones regulares para hacer coincidir todo antes de cierto tipo de palabra
- 26. Negación de cadena usando expresiones regulares
- 27. Representación de direcciones IPv4/IPv6 en Oracle
- 28. Matching '_' y '-' en Java expresiones regulares
- 29. PHP: expresiones regulares simples para coincidir con la longitud?
- 30. Validar IPv4, IPv6 y nombre de host
Véase también http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses – Flow