Ruby on rails 在ruby中区分ip地址和DNS地址

Ruby on rails 在ruby中区分ip地址和DNS地址,ruby-on-rails,ruby,dns,ip,Ruby On Rails,Ruby,Dns,Ip,在ruby中,我如何知道url地址是IP地址还是DNS地址 澄清问题的示例: IP地址:http://74.125.236.72/ DNS地址:http://google.co.in手动检查 string =~ /\/\/[0-9.]+\/?$/ 类似于以下内容,我正在考虑使用以下方法解决此问题:- 这是仅有的两种输入类型(即有效IP或有效主机名)?或者也可以将随机_字符串作为输入,该字符串应分类为无效地址或类似内容?。如果是前者,您可以使用类似于Robert Post的方法来检查它是否是I

在ruby中,我如何知道url地址是IP地址还是DNS地址

澄清问题的示例:

IP地址:
http://74.125.236.72/


DNS地址:
http://google.co.in

手动检查

 string =~ /\/\/[0-9.]+\/?$/

类似于以下内容,我正在考虑使用以下方法解决此问题:-


这是仅有的两种输入类型(即有效IP或有效主机名)?或者也可以将
随机_字符串
作为输入,该字符串应分类为
无效地址
或类似内容?。如果是前者,您可以使用类似于Robert Post的方法来检查它是否是IP地址,如果不是,您知道它是主机名。否则,您还必须检查它是否是有效的主机名。@DaniëlKnippers在我需要执行此操作时,我已经验证了地址是否有效。我只需要知道它是IP还是DNS。注意这个regexp不是很严格,即它将分类
http://192...168.0000“
作为IP地址。也许输入永远不会是无效格式,但我仍然建议改进,只允许4组3位数字,即,
%r{^http://(\d{1,3}\){3}\d{1,3}
def dns_or_ip_addrs_check(address)
  addr = address[/http(?:s)?:\/\/([a-z0-9.]+)\/?/i,1]
  begin
    require 'ipaddr'
    IPAddr.new addr
    'ip address'
  rescue IPAddr::InvalidAddressError
    'dns address'
  end
end

dns_or_ip_addrs_check('http://74.125.236.72/') # => "ip address"
dns_or_ip_addrs_check('http://google.co.in') # => "dns address"