Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 정규식으로 이메일 주소 유효성 검사하는 방법

이메일 주소가 문자열로 주어졌을 때, 아래 조건들을 기준으로 해당 주소가 유효한지 판별해야 합니다.

유효성 검사 조건

  • 이메일 형식은 반드시 username@company.domain 구조를 따라야 합니다.
  • 사용자명(username)에는 영문 대소문자, 숫자, 하이픈(-), 언더스코어(_)만 사용할 수 있습니다.
  • 회사명(company)에는 영문 대소문자와 숫자만 사용할 수 있습니다.
  • 도메인(domain)에는 영문 대소문자만 사용할 수 있습니다.
  • 확장자(최상위 도메인)의 최대 길이는 3자입니다.

정규식을 활용한 해결 방법

이메일 주소의 유효성을 검사하려면 정규 표현식(Regular Expression)을 활용하는 것이 가장 효과적입니다. 파이썬에서는 re 라이브러리를 임포트하여 정규식을 사용할 수 있으며, 문자열이 특정 패턴과 일치하는지 확인할 때는 match() 함수를 사용합니다.

예를 들어, 입력값이 s = "popular_website15@comPany.com"이라면 출력 결과는 True가 됩니다.

풀이 절차

  • 패턴(pat)을 다음과 같이 정의합니다: [a-zA-Z0-9-_]로 시작하는 사용자명, 그 뒤에 @, 그다음 [a-zA-Z0-9]로 구성된 회사명, 마침표(.)로 구분된 뒤 길이가 1~3인 소문자 [a-z] 도메인이 문자열 끝에 위치하는 형태
  • 패턴이 입력 문자열 s와 일치하면 True를 반환합니다.
  • 일치하지 않으면 False를 반환합니다.

구현 예제

아래 코드를 통해 실제 동작 방식을 확인해 보겠습니다.

import re

def solve(s):
   pat = "^[a-zA-Z0-9-_]+@[a-zA-Z0-9]+\.[a-z]{1,3}$"
   if re.match(pat,s):
      return True
   return False

s = "popular_website15@comPany.com"
print(solve(s))

입력

"popular_website15@comPany.com"

출력

True

이처럼 정규식 패턴 하나만 잘 설계하면 복잡한 조건문 없이도 간결하고 효율적으로 이메일 형식을 검증할 수 있습니다. 실무에서는 이 방식을 확장하여 더 엄격한 RFC 표준 기반의 검증 로직으로 발전시킬 수도 있습니다.