이메일 주소의 형식이 올바른지 확인하는 것은 웹 애플리케이션 개발에서 매우 흔한 작업입니다. Python에서는 re 모듈과 정규식(Regular Expression)을 활용하면 간단하게 이메일 ID의 유효성을 검사할 수 있습니다.
정규식을 이용한 이메일 유효성 검사 예제
아래 코드는 re.search() 함수와 정규식 패턴을 사용하여 주어진 이메일 주소가 유효한 형식인지 검사합니다.
import re
s = 'manogna.neelam@tutorialspoint.com'
match = re.search(r'\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2}\b', s, re.I)
print(match.group())실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
manogna.neelam@tutorialspoint.com
정규식 패턴 해설
사용된 정규식 패턴 [A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2}는 다음과 같은 구조로 이루어져 있습니다.
- [A-Z0-9._%+-]+ : 이메일의 로컬 파트(사용자 이름)에 해당하며, 영문 대소문자, 숫자, 점(.), 밑줄(_), 퍼센트(%), 플러스(+), 하이픈(-)을 허용합니다.
- @ : 로컬 파트와 도메인을 구분하는 필수 기호입니다.
- [A-Z0-9.-]+ : 도메인 이름 부분으로, 영문자, 숫자, 점, 하이픈을 허용합니다.
- \.[A-Z]{2} : 최상위 도메인(TLD)으로, 반드시 점(.) 뒤에 2글자 이상의 영문자가 와야 함을 의미합니다.
또한 re.I 플래그는 대소문자를 구분하지 않도록 설정하여, 소문자로 된 이메일 주소도 정상적으로 매칭되게 합니다.
유효성 검사 결과 확인하기
매칭 여부에 따라 참/거짓으로 결과를 판별하고 싶다면 아래와 같이 작성할 수 있습니다.
import re
def validate_email(email):
pattern = r'\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2}\b'
return bool(re.match(pattern, email, re.I))
print(validate_email('manogna.neelam@tutorialspoint.com')) # True
print(validate_email('invalid-email')) # False이처럼 정규식을 활용하면 별도의 외부 라이브러리 없이 Python 표준 라이브러리만으로 이메일 형식 검증을 손쉽게 구현할 수 있습니다.