Gibt es in Rails 3 eine eingebaute Methode, um festzustellen, ob eine Zeichenfolge eine gültige IP-Adresse ist?Rails 3: IP-String validieren
Wenn nicht, was ist der einfachste Weg zu validieren?
Gibt es in Rails 3 eine eingebaute Methode, um festzustellen, ob eine Zeichenfolge eine gültige IP-Adresse ist?Rails 3: IP-String validieren
Wenn nicht, was ist der einfachste Weg zu validieren?
The Rails Weg mit Active in Rails zu validieren 3:
@ip_regex = /^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/
validates :gateway,
:presence => true,
:uniqueness => true,
:format => { :with => @ip_regex }
Good resource hier: http://my.rails-royce.org/2010/07/21/email-validation-in-ruby-on-rails-without-regexp/
Ich weiß nicht viel über RoR, aber wenn Sie keine eingebaute Methode zur Validierung der IP-Adresse finden.
Versuchen Sie, auf diesem regulären Ausdruck:
"^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$"
die IP-Adresse zu bestätigen.
Ich habe es vor kurzem in einem Modul verwendet, also hatte es auf dem Desktop.
sollten Sie verwenden ein Regular Expression
Hier ist eine, die tut, was Sie wollen:
/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.
([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/.match("#{@systemIP}")
Ich wollte nur hinzufügen, dass insa d Ihrer eigenen Muster schreiben Sie den Build in einem Resolv::IPv4::Regex
require 'resolv'
validates :gateway, :presence => true, :uniqueness => true,
:format => { :with => Resolv::IPv4::Regex }
Nicht sicher, wenn sie diese Funktion hinzugefügt haben, aber das ist so viel einfacher – Dex
Ja das ist wesentlich einfacher. @Dex es ist schon seit mindestens ruby 1.9.2 – WarmWaffles
Ich kann bestätigen [es ist in Ruby 1.8.7] (http://ruby-doc.org/stdlib-1.8.7/libdoc/resolv/rdoc/Resolv/IPv4 .html) – dukedave
verwenden können, können Sie verwenden Resolv::IPv4::Regex
wie Jack unten erwähnt, wenn Sie nicht Subnetze akzeptieren müssen.
Wenn Sie es akzeptieren müssen, kann activemodel-ipaddr_validator Edelstein Ihnen helfen. (Disclaimer: Ich bin der Autor des gem)
validates :your_attr, ipaddr: true
Funktioniert gut. Vielleicht lohnt es sich, den Disclaimer hinzuzufügen, dass es _ihr_ Juwel ist. – Shadwell
Sie auch Regexy::Web::IPv4 verwenden können, die zu IP-Adressen mit Portnummern übereinstimmen können.
Sie können auch anrufen nur Standard-Bibliothek IPAddr.new
die Subnetze, IPV6 und andere coole Dinge analysieren wird: (IPAddr) und zurück nil
, wenn das Format nicht in Ordnung ist.
Just do:
valid = !(IPAddr.new('192.168.2.0/24') rescue nil).nil?
#=> true
valid = !(IPAddr.new('192.168.2.256') rescue nil).nil?
#=> false
ich IP4 hier rede. – Dex