티스토리 뷰

기술

email 검증 정규식과 테스트 방법

야자나무열매 야자나무열매 2016.01.12 10:48

기존에 만들어져 있던 회원 가입 시 이메일 체크 정규식을 보니 몇 가지 빠진 것들이 있었다. 결국 다시 만들기 시작했는데, 어딘가에 이메일 주소에 대한 룰이 있지 않을까 싶었다. 잘 정리된 곳이 하나 있었는데, 바로 이 블로그였다. 사실 wikipedia가 최고의 레퍼런스이긴 하다. 블로그와 위키피디아를 보니 RFC 5322 section 3.2.3RFC 5322 section 3.4.1에 이메일 주소에 대한 정의가 있다고 한다. 그런데 문제는 스펙이 너무 까다로워서 전부 만들어주기 힘들다(귀찮다)는 점인데, 앞서 링크를 걸어둔 블로그에 보면 스펙도 적당히 지키면서 잘 만들어둔 정규식이 있다. 하지만 그 정도로 열심히 체크해줄 필요까지는 없어서 간단히 룰을 만들어보았다.

^[0-9a-zA-Z][0-9a-zA-Z\_\-\.\+]+[0-9a-zA-Z]@[0-9a-zA-Z][0-9a-zA-Z\_\-]*[0-9a-zA-Z](\.[a-zA-Z]{2,6}){1,2}$

적당히 설명하면 아래와 같은 룰을 기반으로 만들었다.

  • ^[0-9a-zA-Z]: 일단 숫자나 영문대소문자로 시작한다.
  • [0-9a-zA-Z\_\-\.\+]+: 숫자, 영문대소문자, -, _, ., + 가 1번 이상 들어간다.
  • [0-9a-zA-Z]@: @ 앞에서는 숫자나 영문대소문자로 끝난다. 더불어 여기까지 3개 룰의 조합으로 @앞 local part에는 3글자 이상이 들어가야 한다.
  • [0-9a-zA-Z]: @ 뒤의 domain part는 역시 숫자나 영문대소문자로 시작한다.
  • [0-9a-zA-Z\_\-]*[0-9a-zA-Z]: 그 뒤에 영문대소문자, -, _가 들어갈 수 있으며, 역시 숫자나 영문대소문자로 끝난다. 여기까지 @ 뒤의 2개 룰 조합으로 . 이 나오기 전까지 2글자 이상이 들어가야 한다.
  • (\.[a-zA-Z]{2,6}){1,2}$: 마지막에는 . 뒤에 영문대소문자가 2~6자 들어가는 세트가 1회 혹은 2회 나오고 문자열이 끝나야 한다.

많이 엉성하지만... 어느 정도라도 가려 받는다는 점에서 의의가 있겠다. 위 정규식을 만들며 테스트를 해보기가 어려웠는데, 이 사이트에 들어가보면 정규식을 테스트하며 만들기 매우 좋게 잘 만들어두었다. 테스트할 때는 이메일을 여러개 입력해두고 테스트하기 편하게 정규식 맨 앞의 ^와 맨 뒤의 $를 빼고 테스트한 뒤 나중에 붙이면 편하다.

regexr.com
저작자 표시 비영리 동일 조건 변경 허락
신고
댓글
댓글쓰기 폼