solo regulares regular probar numeros minimo letras extraer expresiones expresion ejemplos con caracteres cadenas java regex

probar - extraer cadenas con expresiones regulares java



¿Cuáles son las expresiones regulares de Java para hacer coincidir las cadenas IPv4 e IPv6? (5)

Aquí hay una expresión regular para hacer coincidir 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 lo especifique como un literal de cadena 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"

Buscando una cadena para pasar a String # matches (String) que coincidirá con IPv4, y otra para que coincida con IPv6.


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";

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


Otra buena opción para procesar direcciones IP es usar las clases Inet4Address e Inet6Address de Java , 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 solo pensé 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 comprimidas.

La biblioteca Java de IPAddress de código abierto validará todas las representaciones estándar de IPv6 e IPv4 y también admitirá la longitud del prefijo (y la validación de tal). Descargo de responsabilidad: soy el gerente de proyecto de esa biblioteca.

Ejemplo de código:

try { IPAddressString str = new IPAddressString("::1"); IPAddress addr = str.toAddress(); } catch(IPAddressStringException e) { //e.getMessage has validation error }