2011-04-27 4 views
2

http://www.example.com과 같은 URL을 허용하고 URL 형식이 올바른지 여부를 표시하는 Java 코드가 필요합니다.URL 형식 확인

답변

19

귀하가 궁금해하는 바를 따라야합니다.

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

+0

@McDowell - 네, 맞습니다. 답변을 업데이트했습니다. – adarshr

+0

아무도 해결하지 못했습니다. 전체 코드를 제공해주십시오. – Ram

1

또한 정규 표현식으로 문자열을 확인할 수 있습니다

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

여기에 대체 버전입니다.

예 : 정규식에 대한

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 나는 그것이 URL 클래스 대신 URI 클래스, 그것은 존재의 이유를 사용하는 것이 가장 좋습니다 말할 것 @adarshr의 답변에 따라

+0

전체 코드를 제공하십시오 – Ram

+3

램, 전체 프로젝트 코드를 기대합니까? 위의 코드를 이해할 수없는 사람들은 코딩을하지 않는 것이 좋습니다. –

+0

작동하지 않습니다. 예를 들면. "www.gmail.com".matches (REGEX_URL)가 거짓을 반환합니다. – Nativ

0

그 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; 
    } 
}