Rails 3:验证IP字符串

Dex*_*Dex 32 regex validation ruby-on-rails ip-address

在Rails 3中,是否有内置的方法来查看字符串是否是有效的IP地址?

如果没有,最简单的验证方法是什么?

Jac*_*ack 68

只是想添加,而不是编写自己的模式,您可以使用一个版本 Resolv::IPv4::Regex

require 'resolv'

validates :gateway, :presence => true, :uniqueness => true,
  :format => { :with => Resolv::IPv4::Regex }
Run Code Online (Sandbox Code Playgroud)

  • 只是想在这里注意,还有`Resolv :: AddressRegex`表达式,它允许IPv4和IPv6地址. (6认同)

Dex*_*Dex 16

在Rails 3中使用ActiveRecord验证的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 } 
Run Code Online (Sandbox Code Playgroud)

这里的资源很好:http://my.rails-royce.org/2010/07/21/email-validation-in-ruby-on-rails-without-regexp/