Rails 3:validationIP字符串
在Rails 3中,是否有内置的方法来查看字符串是否是有效的IP地址?
如果没有,validation的最简单方法是什么?
只是想添加它而不是编写自己的模式,你可以在一个Resolv::IPv4::Regex
使用构建
require 'resolv' validates :gateway, :presence => true, :uniqueness => true, :format => { :with => Resolv::IPv4::Regex }
在Rails 3中使用ActiveRecordvalidation的Rails方法是:
@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 }
这里的资源很好: http : //my.rails-royce.org/2010/07/21/email-validation-in-ruby-on-rails-without-regexp/
您也可以调用标准的库IPAddr.new
来解析子网 , IPV6和其他很酷的东西:( IPAddr )并且如果格式错误则返回nil
。
做就是了:
valid = !(IPAddr.new('192.168.2.0/24') rescue nil).nil? #=> true valid = !(IPAddr.new('192.168.2.256') rescue nil).nil? #=> false
如果您不需要接受子网,可以使用Resolv::IPv4::Regex
作为下面提到的Jack。
如果您需要接受它, activemodel-ipaddr_validator gem可能对您有所帮助。 (免责声明:我是gem的作者)
validates :your_attr, ipaddr: true
我不太了解RoR,但如果你没有找到任何内置的validationIP地址的方法。
试试这个正则表达式:
"^([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}$"
validationIP地址。
我最近在一个模块中使用它,所以它在桌面上。
您应该使用Regular Expression
这是一个做你想要的:
/^([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}")
您也可以使用Regexy :: Web :: IPv4 ,它也可以将IP地址与端口号匹配。