Java regex für die Annahme eines gültigen Hostnamen,die IPv4-oder IPv6-Adresse
Jemand einen guten (möglichst getesteten) regex für accpeting nur einen gültigen DNS-Hostnamen, die IPv4-oder IPv6-Adresse?
InformationsquelleAutor ljbade | 2010-06-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich verstehe, dass Sie gezwungen Verwendung eines regex. Allerdings, wenn möglich, ist es besser zu vermeiden, mit regexes für diese Aufgabe, und verwenden Sie eine Java-Bibliothek mit der Klasse zu tun, die Validierung statt.
Wenn Sie wollen, um die Validierung und DNS-lookup zusammen, dann
InetAddress.getByName(String)
ist eine gute Wahl. Das wird bewältigen, DNS, IPv4 und IPv6, und es gibt Sie einen ordentlich verpacktInetAddress
Instanz enthält den DNS-Namen (falls angegeben) und die IPv4-oder IPv6-Adresse.Wenn Sie nur wollen, zu tun, eine syntaktische Validierung, Apache commons hat ein paar Klassen, die sollten den job tun:
DomainValidator
undInetAddressValidator
.Leider wirft er eine Ausnahme, nur weil ein host nicht vorhanden ist, nicht nur, wenn der host ist ungültig.
was "es" redest du? Haben Sie versucht, die handlungsalternative?
ja, mein Fehler, ich meinte getByName() im besonderen. Für DomainValidator, können Sie sofort sehen, aus den Javadoc, dass es nicht Arbeit im Allgemeinen, weil Sie die Einschränkung der Liste der top-level-domains, das ist etwas, das Menschen sicherlich realisiert, war eine schlechte Idee zurück, wenn .eu .Asien und so weiter Hinzugefügt wurden, und alle, die Ihre Validierung nicht mehr funktioniert.
Die OP speziell fragt zu überprüfen, IPv4, IPv6 oder DNS. Es kann ein problem sein für Sie ... aber in diesem Fall haben Sie die falsche Q&A!
InformationsquelleAutor Stephen C
Guave hat eine neue Klasse HostSpecifier. Es wird auch überprüft, ob der host-name (wenn es einen host-Namen) endet in einem gültigen "public suffix" (z.B., ".com", ".co.uk", etc.), basierend auf der neuesten mozilla public suffix list. Das ist etwas, was Sie NICHT wollen, um zu versuchen mit einem handgefertigten regex!
InformationsquelleAutor Kevin Bourrillion
Inspiriert durch den code, den ich gefunden in dieser Beitrag, habe ich die folgenden validator-Methode, die scheint zu passen einfache Validierung muss ganz schön. Durch das Lesen der JavaDoc von URI habe ich entfernt, einige false-positives wie "host:80" und "hostname/Seite", aber ich kann nicht garantieren, gibt es einige false positives, die linke.
InformationsquelleAutor Henno Vermeulen