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地址与端口号匹配。