유효한 DNS 호스트 이름, IPv4 또는 IPv6 주소 만 acceteting하기위한 좋은 정규 표현식을 가진 사람이 있습니까?유효한 호스트 이름, IPv4 또는 IPv6 주소를 받아들이는 Java 정규식
답변
은 정규식을 사용하는 것으로 알고 있습니다. 그러나 가능한 경우이 작업에 regexes를 사용하지 않는 것이 좋으며 대신 Java 라이브러리 클래스를 사용하여 유효성 검사를 수행하는 것이 좋습니다.
유효성 검사와 DNS 조회를 함께 수행하려면 InetAddress.getByName(String)
이 좋습니다. 이렇게하면 DNS, IPv4 및 IPv6을 한 번에 처리 할 수 있으며 DNS 이름 (제공된 경우)과 IPv4 또는 IPv6 주소가 모두 포함 된 깔끔하게 포장 된 InetAddress
인스턴스를 반환합니다.
구문 검증을 원할 경우 Apache commons에는 작업을 수행해야하는 클래스가 두 개 있습니다 (DomainValidator
및 InetAddressValidator
).
구아바에는 새로운 클래스 HostSpecifier이 있습니다. 또한 호스트 이름 (호스트 이름 인 경우)이 유효한 "공용 접미어"(예 : ".com", ".co.uk"등)로 끝나는 지 확인합니다. 최신 Mozilla 공용 접미어를 기반으로합니다 명부. 그건 당신이 손으로 만들어진 정규식으로 시도하고 싶지 않을 것입니다!
"최신"공용 접미사 목록의 스냅 샷을 찍은 코드를 신뢰하지 않으려는 것입니다. 몇 개월 후 최신 공개 서 픽스가되지 않기 때문입니다. – Trejkaz
this post에서 찾은 코드에서 영감을 얻어 간단한 유효성 검사에 적합한 다음 유효성 검사기 메서드를 만들었습니다. URI의 JavaDoc을 읽음으로써 "host : 80"및 "hostname/page"와 같은 오탐 (false positive)을 제거했지만 일부 오탐 (false positive)이 있음을 보장 할 수는 없습니다.
public static boolean isValidHostNameSyntax(String candidateHost) {
if (candidateHost.contains("/")) {
return false;
}
try {
// WORKAROUND: add any scheme and port to make the resulting URI valid
return new URI("my://[email protected]" + candidateHost + ":80").getHost() != null;
} catch (URISyntaxException e) {
return false;
}
}
- 1. IPv4, IPv6 주소를 문자열로 저장하기위한 크기
- 2. IPv4 또는 IPv6 주소를 비교할 때 길게 변환
- 3. 호스트 이름 정규식
- 4. IP 주소를 빼는 방법은 무엇입니까? (IPv4 및 IPv6 모두)
- 5. PHP 정규식 호스트 이름 추출
- 6. IPv6/IPv4 네트워크에서 장치 자동 검색
- 7. C#에서 IPv4 주소를 조작하는 기능?
- 8. 단일 네트워크 세그먼트의 IPv4 및 IPv6
- 9. IPv6 주소 대체 gethostbyname
- 10. remote_addr가 IPv4 주소를 반환하지 않습니다
- 11. 유효한 IPv6 주소, 74DC :: 02BA입니까?
- 12. Rails 3에서 빠른 검색을 위해 IPv4 및 IPv6 IP 주소를 기록하는 모델을 만드는 방법은 무엇입니까?
- 13. 호스트 이름의 유효한 문자는 무엇입니까?
- 14. boost asio를 사용하여 내 카드의 ipv4 및 ipv6 주소를 열거 함
- 15. Java 프로그램 언어의 정수로 IPv6 주소를 변환하는 방법을
- 16. EnableStatic을 사용하여 WMI를 사용하여 IPv6 주소를 구성 할 수 있습니까?
- 17. ipv4 및 ipv6 주소에 대한 표준 .NET 디코더가 있습니까?
- 18. GetHostAddress()는 IPv4 만 IPv6를 반환합니다.
- 19. 리눅스에서 인터페이스의 IPv6 주소를 얻는 방법
- 20. IPv6 샘플 데이터?
- 21. IPv4 주소는 언제 만료됩니까?
- 22. wrapper.conf에 호스트 이름 추가
- 23. asp 또는 vb6을 사용하여 호스트 이름, 컴퓨터 이름 및 ipv6을 검색하는 간단한 방법을 찾으십시오.
- 24. 은 -1 유효한 포인터 주소를
- 25. IPV6 소켓 생성
- 26. Selenium Grid에서 시스템의 호스트 이름 또는 IP 주소가 필요한 이유
- 27. LWP에서 IPv6 지원을 활성화하려면 어떻게합니까?
- 28. IPv6 및 SoapTcpTransport.GetInputChannel (WSE)
- 29. MySQL : 호스트 이름 유니버설 변경
- 30. .NET에서 강제로 ipv4 연결을 사용 하시겠습니까?
고맙게도, 그 아파치 클래스 트릭을해야합니다! – ljbade
슬프게도 호스트가 유효하지 않을 때뿐만 아니라 호스트가 존재하지 않기 때문에 예외가 발생합니다. – Trejkaz
@Trejkaz - 너 무슨 소리 야? 대체 접근법을 시도 했습니까? –