2012-01-13 3 views
1

Google 고객 중 한 명이 Google 시스템에 API 호출을 통해 실행하기 전에 자체 소프트웨어에서 이메일 주소의 유효성을 검사합니다. 그러나 문제는 유효성 검사 규칙이 시스템과 일치하지 않기 때문에 규칙을 위반하는 주소를 구문 분석하고 수락하는 것입니다. 이로 인해 많은 실패한 전화가 발생합니다.일부 정규식을 구축하여 도메인 이름을 확인하려는 경우 (RFC 952/RFC 1123)

그들은 "[email protected]"과 같은 구문을 분석합니다. 이것은 하이픈으로 시작하는 RFC 952/RFC 1123 규칙을 위반합니다. 그들은 정규식 목록을 제공하여 우리 플랫폼에 맞는 유효성을 업데이트 할 수 있도록 요청했습니다.

따라서 RFC 952/RFC 1123을 찾아서 작성해야합니다. 나는 이것을 다른 SO 스레드에서 발견했다 (나는 lurker이다 :)), 적합 할 것이고 불법 도메인이 보내지는 것을 막을 수 있을까?

"^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$"; 
+0

http://stackoverflow.com/questions/4320574/why-is-jquerys-email-validation-regex-so-simple 및 http://www.whatwg.org/specs/web의 html5 사양을 참조하십시오. -apps/current-work/multipage/states-of-the-type-attribute.html # 전자 메일 상태 - % 28type = 전자 메일 % 29 – goodeye

답변

6

도메인 부분의 최대 길이는 255 자이며 숫자, ASCII 문자 및 하이픈 만 가능합니다. 하이픈이 먼저 올 수 없습니다. normal[a-z0-9]되는 특수 - 인으로, 이것은 다시 normal* (special normal*)* 패턴

[a-z0-9]+(-[a-z0-9]+)* 

: 하나 개의 도메인 구성 요소의 유효성을 확인

에도 불구하고이 정규식, 대소 문자를 구분, 길이를 사용하여 수행 할 수 있습니다. 그런 다음

당신은 normal 일부로서 다른 normal* (special normal*)* 패턴이 모든 것을 가지고 가고, 특별는 . 인, 그리고 시작과 끝을 고정 : 당신은 대소 문자를 구분 일치를 감당할 수없는 경우

^[a-z0-9]+(-[a-z0-9]+)*(\.[a-z0-9]+(-[a-z0-9]+)*)+$ 

, A-Z를 추가 캐릭터 클래스에.

하지만 최대 길이가 255인지는 확인하지 않습니다. 긍정적 인 미리보기를 사용하면되지만 정규식은 매우 복잡해지며 문자열 길이 함수를 사용하는 것이 더 짧습니다.