Saltar al contenido

Validación de IPv6

Nuestro equipo especializado pasados algunos días de trabajo y de recopilar de información, obtuvieron la respuesta, queremos que todo este artículo sea de gran utilidad para tu proyecto.

Solución:

Puede usar la biblioteca Guava, específicamente usando el com.google.common.net.InetAddresses clase, llamando isInetAddress().


isInetAddress

public static boolean isInetAddress(String ipString)

Devoluciones true si el suministrado string es una ip valida string literal, false de lo contrario.

Parámetros: ipString – Cadena a evaluar como una IP string literal

Devoluciones: true si el argumento es una IP válida string literal

A ver si esto funciona:

try 1[0-9][0-9] catch (PatternSyntaxException ex) 
    // Syntax error in the regular expression

Compré un programa muy útil llamado RegexMagic hace casi un año para algunas expresiones regulares complicadas que planeaba usar.

Se suponía que esto era Java, por lo que debería compilarse, supongo que /60 puede estar entre los rangos de 0000 y FFFF, puede modificar esa última parte.

/[A-F0-9]0,4 es lo que agregué a la expresión regular para que coincida con su ejemplo.

La biblioteca IPAddress Java admite el análisis de subredes CIDR IPv4 e IPv6 (es decir, dirección/prefix formato) de forma polimórfica. Descargo de responsabilidad: soy el director del proyecto.

El siguiente método es un código de ejemplo para la validación:

static void parse(String str) 
    IPAddressString addrString = new IPAddressString(str);
    try 
         IPAddress addr = addrString.toAddress();
         IPAddress hostAddr = addrString.toHostAddress();
         Integer prefix = addr.getNetworkPrefixLength();
         if(prefix == null) 
             System.out.println(addr + " has no prefix length"); 
          else 
             System.out.println(addr + " has host address " + hostAddr + " and prefix length " + prefix);
         
     catch(AddressStringException e) 
        System.out.println(addrString + " is invalid: " + e.getMessage());
    

Usando los ejemplos proporcionados en la pregunta, el resultado del método anterior es:

abcd:ef01:2345:6789:abcd:ef01:2345:6789 has no prefix length
2001:db8::8:800:200c:417a has no prefix length
ff01::101 has no prefix length
::1 has no prefix length
:: has no prefix length
2001:db8::8:800:200c:417a has no prefix length
ff01::101 has no prefix length
::1 has no prefix length
:: has no prefix length
::d01:4403 has no prefix length
::ffff:8190:3426 has no prefix length
::d01:4403 has no prefix length
FFFF:129.144.52.38 is invalid: FFFF:129.144.52.38 IP Address error: address has too few segments
2001:db8:0:cd30::/60 has host address 2001:db8:0:cd30:: and prefix length 60
2001:db8:0:cd30::/60 has host address 2001:db8:0:cd30:: and prefix length 60
2001:db8:0:cd30::/60 has host address 2001:db8:0:cd30:: and prefix length 60
2001:0DB8:0:CD3/60 is invalid: 2001:0DB8:0:CD3/60 IP Address error: address has too few segments
2001:db8::cd30/60 has host address 2001:db8::cd30 and prefix length 60
2001:db8::cd3/60 has host address 2001:db8::cd3 and prefix length 60

Como puede ver, la pregunta era incorrecta acerca de que FFFF:129.144.52.38 era válido y que 2001:db8::cd30/60 y 2001:db8::cd3/60 no eran válidos. El primero seria valido si lo fuera ::FFFF:129.144.52.38

Comentarios y puntuaciones

Nos puedes proteger nuestra ocupación mostrando un comentario y dejando una puntuación te estamos agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *