본문 바로가기

Programming & Network/QA

이메일 형식 유효성 검사 리스트

출처: https://ko.wikipedia.org/wiki/%EC%A0%84%EC%9E%90_%EC%9A%B0%ED%8E%B8_%EC%A3%BC%EC%86%8C

로컬 파트

 : 전자 우편 주소의 로컬 파트는 아래의 ASCII 문자 중 어느 것이든 올 수 있다:

대소문자 로마자 기본 A부터 Z, a부터 z

숫자 0부터 9

특수 문자 !#$%&'*+-/=?^_`{|}~

점 (.)

공백과 "(),:;<>@[\] 문자

괄호 안에 사용되는 주석 (예: john.smith(comment)@example.com, (comment)john.smith@example.com)


도메인

 : 이메일 주소 중 도메인 이름은 명확한 지침을 따라야 한다. 호스트명의 요구 사항, 점(.)으로 구분되는 DNS 레이블의 목록, 각 레이블이 63자를 넘지 않는 등의 요구 사항을 충족해야 하며, 다음으로 구성되어야 한다.

대소문자 로마자 기본 A부터 Z, a부터 z

숫자 0부터 9 (최상위 도메인 이름이 모두 숫자가 아닌 경우)

하이픈 - (처음 또는 마지막 글자가 아닌 경우)



특정 프로그래밍 언어에 상관 없이 모두 사용 가능한 간단한 정규식

 

^[A-z|0-9]([A-z|0-9]*)(@)([A-z]*)(\.)([A-z]*)$

^[A-z|0-9]
^a : 맨 앞글자는 무조건 a로 시작이라는 뜻
[...] : [ ] 사이 문자를 찾아라는 뜻
해석 : 문자열의 첫 번째 문자로는 대문자 A로부터 z까지, 혹은 0부터 9까지 문자를 찾아라는 의미
        ex) sdfasf, sfffuff

([A-z|0-9]*)(@)

(...) : 하나의 그룹 지정 가능. 그룹 안에서만 조건 붙일 수 있음
* : 0번 이상 반복하라는 뜻
    ex) a* : a를 0번 이상 반복
해석 : 문자열에서 하나의 그룹을 지정할 것인데 대문자 A부터 z까지, 혹은 0부터 9 까지 0번 이상 반복하여 문자를 찾아라! 는 의미
@ : (@) 와 @는 같은 의미
       ex) sdfasf@, sfffuff@

([A-z]*)(\.)
(A-z*) : 대문자 A부터 소문자 z까지의 문자를 0번 이상 반복하라는 의미
(\.) : \는 정규식에서 사용되는 특수문자를 있는 그대로 문자로 사용
\^ : ^를 특수문자가 아닌 일반 문자로 사용
해석 : 대문자 A부터 z까지 0번 이상 반복하는 문자를 찾고 다음 문자로 .이 나오는 문자를 찾아라! 는 의미
        ex) sdfasf@gmail., sfffuff@naver.

([A-z]*)$
(A-z*) : 대문자 A부터 소문자 z까지의 문자를 0번 이상 반복하라는 의미
$ : $ 앞의 문자로 문자열이 종료된다는 의미
해석 : 대문자 A부터 z까지 0번 이상 반복하는 문자가 마지막으로 나타나는 문자를 찾아라!는 의미
        ex) sdfasf@gmail.com, sfffuff@naver.net