Wie überprüfe ich, ob ein Wert in einer Zeichenfolge eine IP-Adresse ist
wenn ich dies tun
ip = request.env["REMOTE_ADDR"]
Bekomme ich die client-IP-Adresse. Aber was ist, wenn ich will, um zu überprüfen, ob der Wert in der variable ist eigentlich eine IP?
Wie mache ich das?
Bitte helfen.
Vielen Dank im Voraus. Und sorry, wenn diese Frage wiederholt, ich habe mir nicht die Mühe, es zu finden...
BEARBEITEN
Was über IPv6 IP ' s????
InformationsquelleAutor der Frage Rohit | 2010-09-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum lassen Sie nicht eine Bibliothek überprüfen es für Sie? Sollte man nicht einführen, komplexe reguläre Ausdrücke, die sind unmöglich zu erhalten.
Dann in Ihrer Anwendung
Können Sie auch verwenden, Ruby ' s eingebaute
IPAddr
Klasse, aber es eignet sich nicht sehr gut für die Validierung.Natürlich, wenn die IP-Adresse geliefert, die Sie durch den application-server oder ein framework, das es keinen Grund gibt, zu validieren überhaupt. Verwenden Sie einfach die Informationen, die Euch gegeben ist, und behandeln alle Ausnahmen, die sich anmutig.
InformationsquelleAutor der Antwort molf
Ruby hat bereits die benötigten Regex in der standard-Bibliothek.
Kasse resolv.
Wenn Sie es mögen, den kurzen Weg ...
Spaß haben!
InformationsquelleAutor der Antwort wingfire
Ich benutze es für die schnelle überprüfen, da es verwendet eingebaute Bibliothek. Unterstützt ipv4 und ipv6. Es ist nicht sehr streng, obwohl es sagt "999.999.999.999" ist gültig, zum Beispiel. Erleben Sie die prämierten Antworten, wenn Sie brauchen mehr Präzision.
InformationsquelleAutor der Antwort Evgenii
Da die meisten Antworten sprechen nicht über IPV6-Validierung, ich hatte das ähnliche problem.
Ich löste es, indem Sie mit der Ruby-Regex-Bibliothek, da @wingfire wissen es.
Aber ich habe auch die Regexp-Bibliothek zu verwenden, es ist
union
Methode als erklärt hierHabe ich also diesen code für eine Validierung :
Hoffe dies kann jemand helfen !
InformationsquelleAutor der Antwort Philippe B.
Alle oben genannten Antworten davon ausgehen IPv4... Sie müssen sich Fragen, wie klug es ist, Sie zu beschränken, app IPv4 durch das hinzufügen dieser Art von Prüfungen an diesem Tag von der Netto-Migration zu IPv6.
Wenn du mich fragst: nicht validieren. Stattdessen übergeben Sie die Zeichenfolge, um die Netzwerk-Komponenten anhand der IP-Adresse und lassen Sie die Validierung. Fangen Sie die exceptions Sie werfen, wenn es falsch ist, und verwenden Sie diese Informationen, um den Benutzer zu erzählen, was passiert ist. Nicht neu erfinden das Rad, bauen auf der Arbeit von anderen.
InformationsquelleAutor der Antwort Stijn de Witt
Verwenden http://www.ruby-doc.org/stdlib-1.9.3/libdoc/ipaddr/rdoc/IPAddr.html es führt eine Prüfung für Sie. Nur retten die Ausnahme mit falschen, und Sie wissen, dass es ungültig war.
InformationsquelleAutor der Antwort mar
Oder, wenn es Ihnen nichts ausmacht Ausweitung der Kern-Klassen:
InformationsquelleAutor der Antwort Knotty66
Versuchen, diese
Verwenden
IPAddr
InformationsquelleAutor der Antwort Rahul Patel
Dieser reguläre Ausdruck, den ich verwenden, welche ich gefunden habe, hier
/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
InformationsquelleAutor der Antwort Gerhard
IP-Adresse in string-form enthalten muss genau vier zahlen, die durch Punkte getrennt sind. Jede Zahl muss in einem Bereich zwischen 0 und 255 inklusive sein.
InformationsquelleAutor der Antwort squadette
Validierung mittels regular expression:
InformationsquelleAutor der Antwort ankitjaininfo
match eine gültige IP-Adresse mit regexp verwenden
statt
weil viele regex-engine match die erste Möglichkeit in der ODER der Reihenfolge
können Sie versuchen, Ihre regex-engine : 10.48.0.200
test der Unterschied hier
InformationsquelleAutor der Antwort Alban