在Rails 3中,是否有一个内置的方法来查看字符串是否是有效的IP地址?如果没有,最简单的验证方法是什么?
voase2hg1#
只是想补充一下,您可以在一个Resolv::AddressRegex中使用构建,而不是编写自己的模式
Resolv::AddressRegex
require 'resolv' validates :gateway, :presence => true, :uniqueness => true, :format => { :with => Resolv::AddressRegex }
字符串Resolv::AddressRegex匹配IPv4和IPv6地址。如果您只需要一个版本,则可以使用Resolv::IPv4::Regex或Resolv::IPv6::Regex。
Resolv::IPv4::Regex
Resolv::IPv6::Regex
4si2a6ki2#
在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 }
字符串好资源:Wayback Archive - Email validation in Ruby On Rails 3 or Active model without regexp
o2gm4chl3#
你也可以调用标准库IPAddr.new,它将解析IPv6和其他很酷的东西:(IPAddr),如果格式错误,返回nil。只要做:
IPAddr.new
nil
valid = !(IPAddr.new('192.168.2.0/24') rescue nil).nil? #=> true valid = !(IPAddr.new('192.168.2.256') rescue nil).nil? #=> false
字符串
nle07wnf4#
如果你不需要接受Resolv::IPv4::Regex,你可以像下面提到的Jack那样使用Resolv::IPv4::Regex。如果你需要接受它,activemodel-ipaddr_validator gem可能会帮助你。(免责声明:我是gem的作者)
validates :your_attr, ipaddr: true
628mspwn5#
我不知道RoR很多,但如果你没有找到任何内置的IP地址验证方法。试试这个正则表达式:
"^([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}$"
字符串验证IP地址。我最近在一个模块中使用它,所以在桌面上使用它。
e5nqia276#
您应该使用Regular Expression这是一个做你想要的:
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}")
nfeuvbwi7#
您也可以使用Regexy::Web::IPv4,它也可以匹配IP地址和端口号。
7条答案
按热度按时间voase2hg1#
只是想补充一下,您可以在一个
Resolv::AddressRegex
中使用构建,而不是编写自己的模式字符串
Resolv::AddressRegex
匹配IPv4和IPv6地址。如果您只需要一个版本,则可以使用Resolv::IPv4::Regex
或Resolv::IPv6::Regex
。4si2a6ki2#
在Rails 3中使用ActiveRecord进行验证的Rails方法是:
字符串
好资源:Wayback Archive - Email validation in Ruby On Rails 3 or Active model without regexp
o2gm4chl3#
你也可以调用标准库
IPAddr.new
,它将解析IPv6和其他很酷的东西:(IPAddr),如果格式错误,返回nil
。只要做:
字符串
nle07wnf4#
如果你不需要接受
Resolv::IPv4::Regex
,你可以像下面提到的Jack那样使用Resolv::IPv4::Regex
。如果你需要接受它,activemodel-ipaddr_validator gem可能会帮助你。(免责声明:我是gem的作者)
字符串
628mspwn5#
我不知道RoR很多,但如果你没有找到任何内置的IP地址验证方法。
试试这个正则表达式:
字符串
验证IP地址。
我最近在一个模块中使用它,所以在桌面上使用它。
e5nqia276#
您应该使用
Regular Expression
这是一个做你想要的:
字符串
nfeuvbwi7#
您也可以使用Regexy::Web::IPv4,它也可以匹配IP地址和端口号。