2011-04-27 73 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; 
    } 
}