IPv6-Validierung
Ich verwendet IPAddressUtil.isIPv6LiteralAddress (ipAddress)
Methode zum überprüfen der IPv6, aber diese Methode fehlschlägt, für die ipv6-Adresse/Präfix-Länge-format (das format wird erwähnt in RFC 4291 Abschnitt 2.3) von IPV6.
Könnte jemand wissen, alle Prüfungen, die Validierung der "ipv6-Adresse/Präfix-Länge" - format?
Rechtlichen Darstellungen von IPV6
- ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
- 2001:DB8:0:0:8:800:200C:417A
- FF01:0:0:0:0:0:0:101
- 0:0:0:0:0:0:0:1
- 0:0:0:0:0:0:0:0
- 2001:DB8::8:800:200C:417A
- FF01::101
- ::1
- ::
- 0:0:0:0:0:0:13.1.68.3
- 0:0:0:0:0:FFFF:129.144.52.38
- ::13.1.68.3
- FFFF:129.144.52.38
- 2001:0DB8:0000:CD30:0000:0000:0000:0000/60
- 2001:0DB8::CD30:0:0:0:0/60
- 2001:0DB8:0:CD30::/60
NICHT legal Darstellungen von IPV6
- 2001:0DB8:0:CD3/60
- 2001:0DB8::CD30/60
- 2001:0DB8::CD3/60
- Können Sie uns ein Beispiel geben von dem, was Sie versuchen, zu entsprechen?
- Sicher, finden Sie unter ip-Adresse 2001:0DB8:0000:CD30:0000:0000:0000:0000/60
- Das format für die Adresse Präfixe, keine Adressen.
- Sie waren in der Lage, eine Lösung zu finden? Ich bin auch auf der Suche, um zu analysieren, IPv6-Präfix-Adressen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehen, ob das funktioniert:
Kaufte ich ein sehr hilfreiches Programm namens RegexMagic vor knapp einem Jahr für einige komplizierte reguläre Ausdrücke, die ich über die Verwendung der geplanten.
Dieser war wohl zu Java, so sollte es kompilieren, ich nehme an, das /60 kann zwischen den Bereichen von 0000 und FFFF die Sie ändern können, dass der Letzte Teil.
/[A-F0-9]{0,4} ist, was ich Hinzugefügt, um den regulären Ausdruck für dein Beispiel.
|
ich würde brechen Sie in einer Reihe von "else if" - Anweisungen, mit denen auf ein minimum erleichtert die viel einfacher zu DebuggenKönnen Sie die Guava-Bibliothek, speziell mit der com.google.common.net.InetAddresses Klasse, ruft isInetAddress().
Streng genommen, einen Abschnitt 2.3 beschreibt nicht eine Adress-Darstellung, sondern eine Darstellung der Adresse Präfix (auch der "full-length" - Präfix ist nicht das gleiche wie eine Adresse).
Dass heißt, Sie können bedenkenlos ignorieren Sie dieses format, wenn Sie brauchen, um zu überprüfen Adressen.
Meine Idee ist es, es aufgeteilt in zwei Teil -, Präfix-Adresse und Präfix-len.
Hatte ich versucht unten regex in java und es funktionierte für IPV4-und IPV6 -
Die IP-Adresse Java-Bibliothek unterstützt die Analyse von IPv4-und IPv6-Subnetze in CIDR-Notation (dh-Adresse/Präfix-format) in eine polymorphe Art und Weise. Disclaimer: ich bin der Projekt manager.
Die folgende Methode ist ein Beispiel-code für die Validierung:
Mithilfe der Beispiele in der Frage, die Ausgabe der obigen Methode ist:
Wie Sie sehen können, die Frage war falsch über FFFF:129.144.52.38 gültig und zu 2001:db8::cd30/60 und 2001:db8::cd3/60 unwirksam. Die erste wäre eine gültige, wenn es ::FFFF:129.144.52.38