Regulärer Ausdruck, um DNS-Hostname oder IP-Adresse zu entsprechen?
Hat jemand einen regulären Ausdruck handlich zu entsprechen, wird jede juristische DNS-hostname oder IP-Adresse?
Es ist einfach zu schreiben, der funktioniert 95% der Zeit, aber ich bin der Hoffnung, etwas zu bekommen, das ist gut getestet, exakt auf den aktuellen RFC-Spezifikationen für DNS-Hostnamen.
InformationsquelleAutor der Frage DonGar | 2008-09-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie den folgenden regulären Ausdrücken, die separat oder miteinander kombiniert, in einem gemeinsamen ODER-Ausdruck.
ValidIpAddressRegex entspricht Gültiger IP-Adressen und ValidHostnameRegex gültigen host-Namen. Abhängig von der Sprache, die Sie verwenden \ konnte müssen escaped werden mit \.
ValidHostnameRegex gilt als pro RFC-1123. Ursprünglich RFC 952 angegeben, dass der hostname Segmente konnte nicht beginnen mit einer Ziffer.
http://en.wikipedia.org/wiki/Hostname
InformationsquelleAutor der Antwort Jorge Ferreira
Den Hostnamen regex von smink nicht beachten Sie die Begrenzung auf die Länge der einzelnen labels in Hostnamen. Jedes Etikett innerhalb eines gültigen hostname darf nicht mehr als 63 Bytes lang.
Beachten Sie, dass der backslash am Ende der ersten Zeile (oben) ist Unix-shell-syntax für die Spaltung der langen Leine. Sie ist nicht Teil des regulären Ausdrucks selbst.
Hier ist nur der reguläre Ausdruck alleine auf einer einzelnen Zeile auf:
Sollten Sie auch prüfen, GESONDERT die Gesamtlänge der hostname darf nicht mehr als 255 Zeichen. Weitere Informationen finden Sie in RFC 952 und RFC-1123.
InformationsquelleAutor der Antwort Sakari A. Maaranen
Entsprechend eine gültige IP-Adresse verwenden Sie die folgende regex:
statt:
Erklärung
Viele regex-engine match die erste Möglichkeit in der
OR
Sequenz. Zum Beispiel, versuchen Sie die folgenden regex:Test
Test der Unterschied zwischen gut vs schlecht
InformationsquelleAutor der Antwort Alban
Ich bin anscheinend nicht in der Lage sein zu Bearbeiten, die die oben posten, also werde ich meine Antwort hier.
Für hostname - einfache Antwort, auf egrep Beispiel hier -- http: //www.linuxinsight.com/how_to_grep_for_ip_addresses_using_the_gnu_egrep_utility.html
Obwohl der Fall nicht Konto für Werte wie 0 im ersten octet ist, und Werte, die größer als 254 (ip-Adresse) oder 255 (netmask). Vielleicht eine zusätzliche if-Anweisung helfen würde.
Als für die gesetzliche dns-Hostnamen, sofern Sie die Prüfung für den internet-Hostnamen (und nicht intranet), schrieb ich Folgendes geschnippelt, eine Mischung von shell/php, aber es sollte auch anwendbar sein, wie jeder reguläre Ausdruck.
zunächst gehen Sie auf der ietf-website, downloaden Sie und analysieren Sie eine Liste der juristischen Ebene 1 domain-Namen:
Geben sollte Sie ein schönes Stück von re code, der überprüft, ob die Rechtmäßigkeit der top-domain Namen wie .com .org-oder .ca
Fügen Sie dann den ersten Teil des Ausdrucks entsprechend der Richtlinien finden Sie hier -- http: //www.domainit.com/support/faq.mhtml?category=Domain_FAQ&Frage=9 (eine beliebige alphanumerische Kombination und ' - ' - symbol, Gedankenstrich sollte nicht am Anfang oder Ende von einem Oktett.
Dann setzen Sie alle zusammen (PHP preg_match Beispiel):
Können Sie auch wollen, fügen Sie eine if-Anweisung, um zu überprüfen, dass die Zeichenfolge, die Sie die überprüfung ist kürzer als 256 Zeichen -- http://www.ops.ietf.org/lists/namedroppers/namedroppers.2003/msg00964.html
InformationsquelleAutor der Antwort Alex Volkov
InformationsquelleAutor der Antwort PythonDev
Ich denke, dies ist die beste Ip-validation regex. bitte überprüfen Sie es einmal!!!!!!
InformationsquelleAutor der Antwort Prakash Thapa
localhost же есть
InformationsquelleAutor der Antwort user2240578
InformationsquelleAutor der Antwort zangw
Dies funktioniert für gültige IP-Adressen:
InformationsquelleAutor der Antwort aliasav
Hier ist eine regex, die ich verwendet in Ant zu erhalten, einen proxy-host-IP oder den Hostnamen aus ANT_OPTS. Dieser wurde verwendet, um die proxy-IP, so dass ich laufen konnte eine Ameise "isreachable" testen Sie vor der Konfiguration einen proxy für einen Gabel-JVM.
InformationsquelleAutor der Antwort Bill Stephens
Fand ich das ziemlich gut funktioniert für IP-Adressen. Er überprüft, wie die top-Antworten, aber es macht auch sicher, dass die ip ist isoliert, so dass kein text oder mehr zahlen/Dezimalzahlen nach oder vor der ip.
InformationsquelleAutor der Antwort Andrew
diese wieder verwendet werden, nur für diese Art der Validierung
funktioniert nur, wenn
http://www.kk.com
http://www.kk.co.in
nicht funktioniert für
http://www.kk.com/
http://www.kk.co.in.kk
http://www.kk.com/dfas
http://www.kk.co.in/
InformationsquelleAutor der Antwort ayu for u
InformationsquelleAutor der Antwort Martin.Martinsson
versuchen Sie dies:
es funktioniert in meinem Fall.
InformationsquelleAutor der Antwort seraphim
Über IP-Adressen, es scheint, dass es gibt einige Diskussionen darüber, ob führende Nullen enthalten. Es war einmal die gängige Praxis und allgemein akzeptiert, so würde ich argumentieren, dass Sie sollte gekennzeichnet werden gültig, unabhängig von der aktuellen Einstellung. Es gibt auch einige Unklarheiten darüber, ob der text vor und nach den string sollte überprüft werden und, wieder, ich denke, es sollte. 1.2.3.4 ist eine gültige IP-Adresse, aber 1.2.3.4.5 nicht und weder die 1.2.3.4 Teil noch der 2.3.4.5 Teil sollte das Ergebnis in einem match. Einige Anliegen, die bearbeitet werden können mit diesem Ausdruck:
Der unglückliche Teil ist hier die Tatsache, dass die regex-Teil, der überprüft, ein Oktett wird wiederholt, wie auch in vielen angebotenen Lösungen. Das ist zwar besser als bei den Instanzen der Muster, die Wiederholung kann vollständig eliminiert werden, wenn Unterprogramme werden unterstützt in der regex verwendet wird. Das nächste Beispiel können diese Funktionen mit der
-P
Schaltergrep
und nutzt die Vorteile der lookahead-und lookbehind-Funktionalität. (Den Namen der Funktion, den ich ausgewählt habe, ist 'o' für Oktett. Ich könnte verwendet haben, 'octet' als den Namen, aber wollte sein knappe.)Den Umgang der Punkt könnte in der Tat erstellen Sie eine false-negatives, wenn IP-Adressen in einer Datei mit text in form von Sätzen, da die eine Zeit Folgen konnte, ohne Teil der punktierten Schreibweise. Eine Variante des oben genannten fix, dass:
InformationsquelleAutor der Antwort Thom Anderson
InformationsquelleAutor der Antwort Mohammad Shahid Siddiqui
Es ist erwähnenswert, dass es gibt Bibliotheken für die meisten Programmiersprachen, die dies für Sie tun, oft eingebaut in der standard-Bibliothek. Und diese Bibliotheken sind wahrscheinlich gibts viel mehr als oft code, den Sie kopiert aus einem Stack-Überlauf-Antwort, die vor vier Jahren vergessen haben. Und natürlich werden Sie auch in der Regel analysieren Sie die Adresse in eine nutzbare form, statt nur geben Sie eine übereinstimmung mit einer Reihe von Gruppen.
Zum Beispiel die Erfassung und Analyse IPv4-in (POSIX) C:
Natürlich, solche Funktionen nicht funktionieren, wenn Sie versuchen, um, z.B., finden Sie alle gültigen Adressen in einer chat-Nachricht—aber auch dort, kann es einfacher sein, eine einfache, aber übereifrigen regex zu finden, potentiellen Spiele zu, und verwenden Sie dann die Bibliothek zu analysieren.
Zum Beispiel in Python:
InformationsquelleAutor der Antwort abarnert
wie über dieses?
InformationsquelleAutor der Antwort Saikrishna Rao
php:
filter_var(gethostbyname($dns), FILTER_VALIDATE_IP) == true ? 'ip' : 'not ip'
InformationsquelleAutor der Antwort sirjay
Prüfung für den host-Namen wie... mywebsite.co.in, thangaraj.name, 18thangaraj.in thangaraj106.usw.,
InformationsquelleAutor der Antwort Thangaraj
Dachte ich über diese einfache regex suchpattern für die IP-Adresse passend
\d+[.]\d+[.]\d+[.]\d+
InformationsquelleAutor der Antwort Dody