Private IP-Adressen-ID in regulärem Ausdruck

Frage ich mich, ob dies ist der beste Weg, um match-eine Zeichenfolge, die beginnt mit einer privaten IP-Adresse (Perl-Stil reguläre Ausdrücke):

(^127\.0\.0\.1)|(^192\.168)|(^10\.)|(^172\.1[6-9])|(^172\.2[0-9])|(^172\.3[0-1])

Vielen Dank!

Kommentar zu dem Problem - Öffnen
Zuerst sollten Sie überprüfen, RFC1918, um die richtige Liste. Zweitens, schlage ich vor, dass eine Lösung, die nicht mit regexps werden, sind leichter zu pflegen. Sobald Sie konvertieren Sie eine IP-Adresse numerische, ist es ziemlich einfach, eine übereinstimmung mit einer Liste von privaten IP-Bereiche. Dies lässt Sie auch ganz einfach die öffentlich verfügbaren bogon-Listen, die enthalten viel mehr als RFC1918. Kommentarautor: derobert
@derobert wahr, aber für Anwendungen, wie eine Tomcat Remote-Adress-Filter Sie benötigen einen regulären Ausdruck. Kommentarautor: Raedwald
Es ist ein weit verbreiteter Anfänger-Fehler, zu denken, ^ bedeutet "nicht" in diesem Kontext, so trägt er wies darauf hin: Jeder ^ in Ihrem Ausdruck einfach Anker das match an den Anfang der Zeile. In der traditionellen regex, es gibt keinen einfachen Weg zu sagen, "nicht diese Zeichenfolge" obwohl Perl-kompatibles / PCRE-Ausdrücken negative lookaheads mit (?!...) Kommentarautor: tripleee

InformationsquelleAutor der Frage caseyamcl | 2010-05-11

Schreibe einen Kommentar