2010-08-10 3 views
1

URL이 유효한지 확인해야합니다. URL은 같은 같은 일부 하위 디렉토리를 포함해야한다 : URL은 하위 디렉토리 test, test1example을 포함해야Java에서 regex를 사용하여 URL의 유효성을 검사하는 방법은 무엇입니까?

example.com/test/test1/example/a.html 

. Java에서 regex를 사용하여 URL이 유효한지 어떻게 확인할 수 있습니까?

+0

그렇다면 URL이 유효한지 또는 test와 test1이 맞는지 확인하고 싶습니까? – NullUserException

+1

예 ... 맞습니다 ... – see

+0

만약'test1' 대신에'test % 31'이라면 어떻게 될까요? – polygenelubricants

답변

1

당신이 정규식에하고 싶은 때문에, 어떻게 이것에 대해 ...

이 질문은 정규 표현식을 사용하여 여기에 대한 답변
Pattern p = Pattern.compile("example\\.com/test/test1/example/[\\w\\W]*"); 

System.out.println("OK: " + p.matcher("example.com/test/test1/example/a.html").find()); 
System.out.println("KO: " + p.matcher("example.com/test/test2/example/a.html").find()); 
+0

'url.startsWith ("example.com/test/test1/example/")'할 수도 있습니다. – polygenelubricants

+0

참 ... 성능상의 이유로 패턴을 사전 처리 컴파일 한 다음 나중에 다시 사용하는 것이 좋습니다. – limc

+0

아니요. startsWith()는 항상 정규 표현식이 최적의 경우에도 수행해야하는 문자를 하나씩 일치시키기 때문에 컴파일 된 정규 표현식은 여전히 ​​String.startsWith()보다 빠르지 않습니다. 또한 정규 표현식이 고정되어 있지 않으며 .find()를 사용하고 있으므로 URL이 http : //my.evil.domain/doBadStuff? url = example.com/test/test2 인 경우에도 true를 반환합니다. /example/a.html – Avi

0

URL을 인수로 사용하여 java.net.URL(String) 생성자에 전달하고 생성자가 java.net.MalformedURLException을 던지는지 확인할 수 있습니다.

EDIT 그러나 주어진 문자열에 주어진 하위 문자열이 들어 있는지 확인하려는 경우 String.contains(CharSequence) 메서드를 사용하십시오. 예를 들면 :

String url = "example.com/test/test1/example/a.html"; 
if (url.contains("/test/test1/")) { 
    // ... 
} 
+0

나는 주어진 URL에 유효한 URL이 아닌 특정 디렉토리가 있어야 함을 의미합니다. 내 나쁜 영어에 대해 유감입니다. – see

2
String url = "example.com/test/test1/example/a.html"; 
List<String> parts = Arrays.asList(url.split("/")); 
return (parts.contains("test") && parts.contains("test1") && parts.contains("example")); 
+0

'? true : false'. 그것은 불필요합니다. 표현식은 이미 어쨌든'boolean'을 반환합니다. – BalusC

+0

@BalusC thanks. – dave

+1

'example.com/nope.html? query = lol/test/test1/example/lol'은 어떨까요? – polygenelubricants

관련 문제