2013-03-07 1 views
0

내가 자바 초보자 그리고 난 다음에 일치하는 정규식 알아 내기 위해 노력 해왔다 :http 및 https가 있거나없는 호스트를 일치시키는 정규식.

  1. 호스트 만이 아닌 IP를
  2. 호스트뿐만 아니라 HTTP 또는 HTTPS 태그로 수 있습니다 .
  3. 호스트는 다른 TLD를 가질 수 있습니다.

나는 [a-z0-9]+|([a-z0-9]+[-]+[a-z0-9]+))[.])+을 시도했지만 예상하지 못했습니다. 누군가가 나를 도울 수 있다면 좋을 것입니다.

+0

일치해야하는 것과 그렇지 말아야 할 것의 예와 함께 몇 가지 사양을 제공하십시오. –

답변

2
public static void main(String[] args) { 
Pattern pattern = Pattern.compile ("(?:https?://)?(?:[-a-zA-Z0-9_]+\\.)*[-a-zA-Z0-9_]*[-a-zA-Z_][-a-zA-Z0-9_]*(?:\\.[-a-zA-Z0-9_]+)*"); 

System.out.println(pattern.matcher("127.0.0.1").matches()); // false 
System.out.println(pattern.matcher("1.0.0.127.in-addr.arpa").matches()); // true 
System.out.println(pattern.matcher("localhost").matches()); // true 
System.out.println(pattern.matcher("1-2-3-4").matches()); // true 
System.out.println(pattern.matcher("http://1.0.0.127").matches()); // false 
System.out.println(pattern.matcher("https://1.0.0.127").matches()); // false 
System.out.println(pattern.matcher("ftp://1.0.0.127.in-addr.arpa").matches()); // false 
System.out.println(pattern.matcher("http://1.0.0.127.in-addr.arpa").matches()); // true 
System.out.println(pattern.matcher("https://1.0.0.127.in-addr.arpa").matches()); // true 
+1

'-test.com'과 일치합니다. 원하지 않는 것 같습니다. –

+0

고마워. .. 내가 기대하고 있던 완벽한 물건이었다. – user2144099

+0

내 경우에는 밑줄이있는 호스트도 일치해야합니다. 밑줄도 허용하도록 slighly 수정할 수 있습니까? – user2144099

0

달성하려는 작업이 확실하지 않습니다. 호스트 부분을 원하지만 해결 된 것, 즉 IP 주소는 허용되지 않습니다. 왜 그걸 왜 원하니? 선택적 포트 번호는 무엇입니까? 그리고 가능한 로그인 정보는? 구문 분석 된 데이터에 심각한 문제가있는 경우 내 제안은 java.net.URL (또는 URI) 개체를 사용하고 있습니다.

정규 표현식으로 만 재생하려면 입력 텍스트에 따라 정규 표현식으로 충분하지 않기 때문에 요구 사항을 더 잘 지정하십시오.

Lorem ipsum.Dolor sit amen 

ipsum.Dolor 유효한 호스트로 접수해야

다음 입력을 고려? http:// 프로토콜 스펙이없고 IP 주소가 아니므로 요구 사항에 따라 일치해야합니다.

관련 문제