【问题标题】:Differentiate between ip adress and DNS address in ruby区分ruby中的ip地址和DNS地址
【发布时间】:2014-05-08 20:01:18
【问题描述】:

我如何知道 url 地址是 ruby​​ 中的 IP 地址或 DNS 地址。

澄清问题的示例:

IP 地址:http://74.125.236.72/

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

【问题讨论】:

  • 是仅有的两种可能的输入类型(即有效 IP 或有效主机名)吗?或者是否也可以将random_string 作为输入,应该归类为invalid address 或类似的东西?如果是前者,您可以使用类似于 Robert 发布的方法来检查它是否是 IP 地址,如果不是,您知道它是主机名。否则,您还必须检查它是否是有效的主机名。
  • @DaniëlKnippers 当我需要这样做时,我已经验证了地址是有效的。我只需要知道它是 IP 还是 DNS。

标签: ruby-on-rails ruby dns ip


【解决方案1】:

手动检查一下?

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

【讨论】:

  • 注意这个正则表达式不是很严格,也就是说,它将'http://192...168.0000'分类为IP地址。也许输入永远不会采用无效格式,但我仍然建议进行改进,只允许 4 组 3 位数字,即%r{^http://(\d{1,3}\.){3}\d{1,3}}
【解决方案2】:

类似下面的东西,我想用IPAddr来解决这个问题:-

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"

【讨论】:

    猜你喜欢
    • 2017-08-25
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    相关资源
    最近更新 更多