본문 바로가기
C.W.K.
Stream
Lesson 12 of 12 · published

실전 — 전화번호, 날짜, 이메일 조립

~12 min · practical, validation, composition

Level 0패턴 호기심
0 XP0/90 lessons0/15 achievements
0/100 XP to next level100 XP to go0% complete

작은 문법을 이어 붙여 실전 패턴을 만들어

문자 클래스에 +{n} 같은 수량자를 붙이면 일정한 모양을 가진 문자열을 찾을 수 있어. 처음부터 정규식을 떠올리려 하지 말고, 입력의 모양을 작은 조각으로 나눈 뒤 조립해 봐.

미국 전화번호 모양

숫자 세 자리, 하이픈, 숫자 세 자리, 하이픈, 숫자 네 자리라면 \d{3}-\d{3}-\d{4}로 나타낼 수 있어. 문자열 전체를 검증할 때는 앵커로 양끝을 고정하고, 긴 글에서 일부를 찾을 때는 고정하지 않아.

ISO 날짜 모양

숫자 네 자리와 두 자리 두 묶음을 하이픈으로 잇는 모양은 \d{4}-\d{2}-\d{2}야. 다만 이 패턴은 9999-99-99도 받아들여. 정규식은 생김새만 확인하므로 실제 날짜인지 판단하려면 매칭한 값을 날짜 라이브러리에 넘겨야 해.

이메일처럼 보이는 문자열

[\w.+-]+@[\w-]+\.[\w.-]+는 흔한 이메일 모양을 느슨하게 찾는 패턴이야. 로컬 부분, @, 도메인, 점, 뒤쪽 이름을 차례로 표현하지만 모든 유효한 이메일 주소를 판정하는 완전한 규칙은 아니야.

조립 순서를 기억해

  1. 먼저 찾을 모양을 "숫자 세 자리, 하이픈, 숫자 네 자리"처럼 말로 적어.
  2. 각 조각을 가장 작은 문자 클래스나 축약형으로 바꿔.
  3. 전체 값 검증인지 부분 검색인지에 따라 앵커를 결정해.
  4. 정상 입력뿐 아니라 틀린 입력과 경계 입력도 함께 시험해.

다음 트랙에서 수량자와 그룹을 더 배워도 이 순서는 그대로야. 복잡한 패턴일수록 작은 조각의 뜻을 먼저 확정하는 편이 훨씬 안전해.

Code

기본 요소로 만든 진짜 패턴 모음·python
import re

# 미국 전화번호를 텍스트 어디에서든 검색
phone = r'\d{3}-\d{3}-\d{4}'
re.findall(phone, 'Call 415-555-0199 or 212-867-5309')
# ['415-555-0199', '212-867-5309']

# ISO 날짜 모양을 전체 문자열에서 검증
date = r'^\d{4}-\d{2}-\d{2}$'
bool(re.fullmatch(date, '2026-05-04'))   # True
bool(re.fullmatch(date, '2026-5-4'))     # False (2자리 필요)
bool(re.fullmatch(date, '9999-99-99'))   # True (모양은 맞지만 날짜 의미는 틀림)

# 느슨한 이메일 모양
email = r'[\w.+-]+@[\w-]+\.[\w.-]+'
re.findall(email, 'reach me at hi+tag@example.co.kr today')
# ['hi+tag@example.co.kr']

External links

Exercise

SKU, 내부 ID, 우편번호, 라이선스 키처럼 실제로 다루는 데이터 모양 하나를 골라 검증 패턴을 작성해. 고정된 글자 수에는 {n}을 사용하고, 정상 입력과 잘못된 입력을 함께 대입해 경계를 확인해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.