Rails 3: Validate IP String

后端 未结 7 859
孤独总比滥情好
孤独总比滥情好 2020-12-13 18:41

In Rails 3, is there a built in method for seeing if a string is a valid IP address?

If not, what is the easiest way to validate?

相关标签:
7条回答
  • 2020-12-13 18:50

    Just wanted to add that instead of writing your own pattern you can use the build in one Resolv::IPv4::Regex

    require 'resolv'
    
    validates :gateway, :presence => true, :uniqueness => true,
      :format => { :with => Resolv::IPv4::Regex }
    
    0 讨论(0)
  • 2020-12-13 19:01

    i dont know about RoR a lot, but if you dont find any built in method for validation of IP Address.

    Try on this 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}$"
    

    to validate the IP Address.

    I recently used it in one module so had it on desktop.

    0 讨论(0)
  • 2020-12-13 19:02

    You can use Resolv::IPv4::Regex as Jack mentioned below if you don't need to accept subnets.

    If you need to accept it, activemodel-ipaddr_validator gem may help you. (disclaimer: I'm the author of the gem)

    validates :your_attr, ipaddr: true
    
    0 讨论(0)
  • 2020-12-13 19:08

    You should use a Regular Expression

    Here is one that does what you want:

    /^([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}")
    
    0 讨论(0)
  • 2020-12-13 19:09

    You can also use Regexy::Web::IPv4 which can match ip addresses with port numbers too.

    0 讨论(0)
  • 2020-12-13 19:11

    The Rails way to validate with ActiveRecord in Rails 3 is:

    @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 here: Wayback Archive - Email validation in Ruby On Rails 3 or Active model without regexp

    0 讨论(0)
提交回复
热议问题