Проверка формата IP-адреса - PullRequest
1 голос
/ 16 декабря 2011

Я разрабатываю приложение Ruby on Rails с использованием Ruby v1.8.7 .Мой вопрос больше о Ruby языке.

Я знаю, что есть встроенная библиотека Ruby с именем IPAddr в Ruby v1.8.7 .Он хорошо обрабатывает проблемы, связанные с IP-адресами.Но, похоже, он не предоставляет какого-либо метода проверки формата IP-адреса.

Может ли кто-нибудь предоставить мне хороший способ проверки формата IP-адреса (адреса IPv4 и IPv6) в Ruby?Спасибо.

PS

Я пробовал регулярные выражения:

ip_regex = ^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.
([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$

ip_addr='127.0.0.3'
ip_addr =~ ip_regex

Но это не работает ...

Ответы [ 3 ]

6 голосов
/ 26 октября 2012

http://www.ruby -doc.org / STDLIB-1.8.7 / libdoc / IPADDR / RDoc / IPAddr.html

Класс IPAddr уже предоставляет методы для проверки, являются ли они форматами IPV4 или IPV6:

  • # ipv4
  • # ipv6
3 голосов
/ 16 декабря 2011

ActiveValidators имеет валидатор IP.
Он использует регулярное выражение для любого ipv4 и Resolv::IPv6::Regex для любого адреса ipv6.

Чтобы использовать его, это очень просто.
Добавьте активные валидаторы в ваш Gemfile.

gem 'activevalidators'

Затем в классе вашего компьютера:

class Computer << ActiveRecord::Base
  validates :remote_address,
    :ip => { :format => :v4 }
end
1 голос
/ 16 декабря 2011

Похоже, ваше регулярное выражение неверно. Должно быть:

/^([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])$/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...