我怎麼知道一個url地址是紅寶石的IP地址或DNS地址。區分ip地址和紅寶石DNS地址
例子來闡明問題:
IP地址:http://74.125.236.72/
DNS地址:http://google.co.in
我怎麼知道一個url地址是紅寶石的IP地址或DNS地址。區分ip地址和紅寶石DNS地址
例子來闡明問題:
IP地址:http://74.125.236.72/
DNS地址:http://google.co.in
只需手動檢查呢?
string =~ /\/\/[0-9.]+\/?$/
請注意,這個正則表達式並不是非常嚴格,即它會將「http:// 192 ... 168.0000」作爲IP地址進行分類。也許輸入將永遠不會是無效的格式,但我仍然建議改進,只允許4組3位數字,即'%r {^ http://(\ d {1,3} \。)。 {3} \ d {1,3}}'。 –
類似下面,我想解決使用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"
是那些只有2種輸入可能的(即有效的IP或有效的主機名)?或者,也可以將'random_string'作爲輸入,應該將其分類爲'無效地址'或類似的東西?如果是前者,您可以使用與Robert發佈的類似的方法來檢查它是否是IP地址,如果不是,則知道它是主機名。否則,你還必須檢查它是否是一個有效的主機名。 –
@DaniëlKnippers當我需要這樣做時,我已經驗證了地址是有效的。我只需要知道它是一個IP還是DNS。 – shivam