본문 바로가기
FRONT/JS

[JS] 이메일 유효성 검증 정규식

by 개발송이 2024. 4. 25.

정규식 : 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어.

 

정규식 검증 사이트

https://regexr.com/?ref=nextree.co.kr

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

 

기존에 사용하던 이메일 검증식에

testmail._.@test.com < 이런 형식의 이메일이 자꾸 걸려서 테스트를 시작

 


 

기본적인 정규식

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
  • 영문자(a-z, A-Z), 숫자(0-9), 특수 문자(._%+-)로 시작
  • '@' 기호 필요
  • 이메일 도메인은 영문자와 숫자로 이루어진 문자열이며, '-' 또는 '.'으로 구분
  • 마침표(.)로 구분된 이메일 도메인 뒤에는 최소 두 개의 문자가 필요

 

[\w.%+-]+@(?:[\w-]+\.)+[\w]{2,}$

 

  • 영문자(a-z, A-Z), 숫자(0-9), 특수 문자(._%+-) 를 ([\w.%+-]+) 이렇게 표현할 수 있음

 

 

강력한 정규식

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

 

  • [a-z0-9!#$%&'*+/=?^_``{|}~-]+: 이메일 주소의 로컬 파트(local part)를 나타내며, 이메일 주소에서 사용할 수 있는 특수 문자와 알파벳 소문자, 숫자를 허용
  • (?:\.[a-z0-9!#$%&'*+/=?^_``{|}~-]+)*: 점(.)으로 구분된 도메인 이름의 부분을 허용하며, 각 부분은 특수 문자와 알파벳 소문자, 숫자를 허용
  • @(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+: 이메일 주소의 도메인 부분을 나타내며, 최상위 도메인까지 고려
  • [a-z0-9](?:[a-z0-9-]*[a-z0-9])?: 최상위 도메인을 포함하여 도메인 이름의 각 부분을 허용

 

이 정규식을 사용한 경우 [ testmail._.@test.com ] 형식은 검증에 통과하지 못했다.

저 마지막에 들어간 점(.)때문에 자꾸 통과가 안됨.

 

두번째 영역에 점(.)으로 구분하는 영역을 빼니까 통과돼었당