2011-04-27 69 views
2

我需要一個Java代碼,它接受一個URL,如http://www.example.com,並顯示URL的格式是否正確。檢查URL的格式

回答

19

這應該做你所要求的。

public boolean isValidURL(String urlStr) { 
    try { 
     URL url = new URL(urlStr); 
     return true; 
    } 
    catch (MalformedURLException e) { 
     return false; 
    } 
} 

下面是另一個版本:

public boolean isValidURI(String uriStr) { 
    try { 
     URI uri = new URI(uriStr); 
     return true; 
    } 
    catch (URISyntaxException e) { 
     return false; 
    } 
} 
+0

使用[java.net.URI中](http://download.oracle.com/javase/6/docs/api/java/net/URI.html)類代替。 – McDowell 2011-04-27 11:07:42

+0

@McDowell - 是的,你是對的。更新了答案。 – adarshr 2011-04-27 11:11:46

+0

沒有人,它沒有制定出來,你可以請提供完整的代碼 – Ram 2011-04-27 15:39:08

1

您可以檢查與正則表達式也字符串。

如:

private static final String REGEX_URL = "^[A-Za-z][A-Za-z0-9+.-]{1,120}:[A-Za-z0-9/](([A-Za-z0-9$_.+!*,;/?:@&~=-])|%[A-Fa-f0-9]{2}){1,333}(#([a-zA-Z0-9][a-zA-Z0-9$_.+!*,;/?:@&~=%-]{0,1000}))?$"; 

String url = "http://www.example.com"; 
System.out.println(url.matches(REGEX_URL)); 

禮貌的正則表達式:http://www.manamplified.org/archives/2006/10/url-regex-pattern.html

+0

請提供完整的代碼 – Ram 2011-04-27 15:45:42

+3

Ram,您是否期望整個項目代碼?無法理解上述代碼的人,最好不要編碼。 – 2011-09-22 08:20:42

+0

它不起作用。爲前。 「www.gmail.com」.matches(REGEX_URL)返回false – Nativ 2013-07-11 09:30:51

0

基於從@adarshr我會說這是最好的使用URL類,而不是URI類,因爲它作爲原因的答案該URL類將標記爲htt://example.com等無效,而URI類不會(我認爲這是問題的目標)。

//if urlStr is htt://example.com return value will be false 
public boolean isValidURL(String urlStr) { 
    try { 
     URL url = new URL(urlStr); 
     return true; 
    } 
    catch (MalformedURLException e) { 
     return false; 
    } 
}