Ruby on rails 在ruby中区分ip地址和DNS地址
在ruby中,我如何知道url地址是IP地址还是DNS地址 澄清问题的示例: IP地址: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
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"