2014-03-29 90 views
1

我怎麼知道一個url地址是紅寶石的IP地址或DNS地址。區分ip地址和紅寶石DNS地址

例子來闡明問題:

IP地址:http://74.125.236.72/

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

+0

是那些只有2種輸入可能的(即有效的IP或有效的主機名)?或者,也可以將'random_string'作爲輸入,應該將其分類爲'無效地址'或類似的東西?如果是前者,您可以使用與Robert發佈​​的類似的方法來檢查它是否是IP地址,如果不是,則知道它是主機名。否則,你還必須檢查它是否是一個有效的主機名。 –

+0

@DaniëlKnippers當我需要這樣做時,我已經驗證了地址是有效的。我只需要知道它是一個IP還是DNS。 – shivam

回答

0

只需手動檢查呢?

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

請注意,這個正則表達式並不是非常嚴格,即它會將「http:// 192 ... 168.0000」作爲IP地址進行分類。也許輸入將永遠不會是無效的格式,但我仍然建議改進,只允許4組3位數字,即'%r {^ http://(\ d {1,3} \。)。 {3} \ d {1,3}}'。 –

0

類似下面,我想解決使用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"