저는 파이썬을 사용하고 있으며 간단한 api 또는 regex로 하여금 도메인 이름의 유효성을 검사하기를 원합니다. 타당성에 의해 필자는 문법적 유효성과 도메인 이름이 실제로 인터넷에 존재하는지 아닌지에 대한 것이 아닙니다.문자열에서 유효한 도메인 이름을 확인 하시겠습니까?
답변
모든 도메인 이름은 식별자의 점으로 구분 된 목록의 각 더 이상 63 자 이하 경우 (구문) 유효하고, 문자, 숫자 및 대시 (아무 밑줄)의 구성.
그래서 :
r'[a-zA-Z\d-]{,63}(\.[a-zA-Z\d-]{,63})*'
는 시작이 될 것입니다. 물론 요즘에는 Ascii가 아닌 일부 문자가 허용 될 수 있습니다 (최근 개발). 매개 변수를 많이 변경합니다.이를 처리해야합니까?
r'^(?=.{4,255}$)([a-zA-Z0-9][a-zA-Z0-9-]{,61}[a-zA-Z0-9]\.)+[a-zA-Z0-9]{2,5}$'
- 내다는 시작과 끝은 최소 4 (
a.in
) 1 ~ 63 사이의 길이 (기간으로 구분) 255 자 - 하나 이상의 라벨 최대가 있는지 확인한다 영숫자로되어 있으며 중간에 영숫자 문자와 하이픈을 포함합니다. (누구의 최대 길이가 5 박물관 용) 최상위 도메인 이름은 정규식 뭔가, 유효한 도메인 이름을 테스트 할 가장 신뢰할 수 방법을 할 수있는 동안 그
이것은 punycode를 저장할 수 없습니다. 가장 짧은 키릴 스크립트 2 글자 최상위 도메인은 punycode에서 6 글자입니다. – kaleissin
박물관은 6 문자가 아니라 5 문자입니다. –
예상되는 TLD 길이를 하드 코딩하는 것은 좋지 않습니다. 특히 IDN TLD가 인코딩되어 5보다 훨씬 길어지기 때문에 어렵습니다. –
참고로 이어
from socket import getaddrinfo
result = getaddrinfo("www.google.com", None)
print result[0][4]
주, 그것은 잘못된 남를 해결하기 위해 시간이 걸릴 수 있습니다 es) 그러나 이것을 시도하는 누군가를 평가할 수 있습니다.
이것의 장점은 정규 표현식이 유효 "hotmail.con"를 말할 것입니다 반면이 (대신 "hotmail.com"의 말을) 무효로 "hotmail.con"을 잡을 것이라는 점이다.
이것은 실제로 별개의 문제이며 질문에 대한 좋은 답변이 아닙니다. 과거에 DNS가 악용에 사용되었다는 것을 감안할 때, 문자열을 사용하기 전에 적어도 막연하게 유효한지 확인하는 것은 현명한 방법 일뿐 아니라 DNS 조회보다 훨씬 빠른 속도입니다. 이것은 코드를 실행하여 악의적인지 확인하는 것과 유사합니다! – Synchro
이미 생성 된 도메인 이름의 유효성을 검사하는 데는 사용할 수 없습니다. 기존 도메인 이름에 대해서만 유효합니다. – nerdoc
'https : // google.com /'과 같은 유효한 URL이 오류를 반환하는 이유는 무엇입니까? –
것은 나는이 사용했던 :
(r'(\.|\/)(([A-Za-z\d]+|[A-Za-z\d][-])+[A-Za-z\d]+){1,63}\.([A-Za-z]{2,3}\.[A-Za-z]{2}|[A-Za-z]{2,6})')
은 다음과 보장하기 위해 두 점 후 (WWW.) 또는/(HTTP : //) 및 대시 이름 만 내부와 같은 접미사와 일치하는 발생 gov.uk도.
대답은 모두이 시점에서 스펙 꽤 오래된 있습니다. 아래의 내용이 현재 사양과 정확하게 일치 할 것입니다.
r'^(?=.{1,253}$)(?!.*\.\..*)(?!\..*)([a-zA-Z0-9-]{,63}\.){,127}[a-zA-Z0-9-]{1,63}$'
- 1. 도메인 이름을 사용하여 루비에서 서버 상태를 확인 하시겠습니까?
- 2. 유효한 이메일 주소 확인
- 3. preg_replace를 사용하여 문자열에서 도메인 확장명을 제거 하시겠습니까?
- 4. 문자열에서 특수 문자 (/ * - + _ @ & $ # %)를 확인 하시겠습니까?
- 5. 도메인 이름을 회사 이름으로 변환 하시겠습니까?
- 6. WCF 요청에서 도메인 이름을 요청 하시겠습니까?
- 7. 테스트를 위해 도메인 이름을 로컬로 설정 하시겠습니까?
- 8. 각 사용자의 도메인 이름을 사용 하시겠습니까?
- 9. 도메인 확인
- 10. 유효한 HTML 확인 C#
- 11. 유효한 SQL 스크립트 확인
- 12. 유효한 GUID 확인
- 13. C# 정규식을 사용하여 도메인 이름을 구문 분석 하시겠습니까?
- 14. .au 도메인 이름을 확인하기위한 Regexp
- 15. 입력 할 때 사용자 이름을 확인 하시겠습니까?
- 16. 문자열에서 객체 이름을 만드십시오.
- 17. 문자열에서 숫자를 제거 하시겠습니까? 문자열에서
- 18. ruby의 문자열에서 하위 도메인 제거
- 19. 문자열에서 고유 한 폴더 이름을 생성하는 질문
- 20. 문자열이 유효한 지리적 위치인지 확인
- 21. Java에서 유효한 XML 이름을 생성하십시오.
- 22. 문자열에서 유효한 URL을 얻는 방법은 무엇입니까?
- 23. 현재 도메인 확인
- 24. DNS로 도메인 가용성 확인
- 25. 도메인 이름 확인
- 26. 확인 도메인 가용성 자바
- 27. 리디렉션에서 도메인 이름 확인
- 28. 도메인 소유권 확인
- 29. FQDN에서 도메인 이름을 얻으시겠습니까?
- 30. 사용자가 스푸핑 도메인 이름을
어떤 이유로? 전자 메일이라고 가정하면 정규 표현식이 아니라 MX 레코드에 대한 DNS 쿼리를 수행하여 실제 유효성을 검사해야합니다. – Kimvais
Nope. 알려진 유효하지 않은 이름을 조회 할 때 별다른 이점이 없으며 단지 시간과 자원을 낭비합니다. 또한 전자 메일을 전달하기 위해 MX 레코드가 필요하지 않은 경우 A 레코드로 충분합니다. – Synchro
은 이미 설명한 것 같다 [여기 (http://stackoverflow.com/questions/1128168/validation-for-url-domain-using-regex-rails). – Incognito