정규식 검증 패턴
이메일·URL·전화번호·비밀번호 강도부터 ID·날짜 형식, 텍스트 정리용 찾아바꾸기까지 실무에서 반복해서 찾게 되는 정규식 16개를 모았습니다. 카드를 클릭하면 구분자나 플래그 없이 패턴 문자열만 복사되고, 정규식 테스터의 Pattern 입력란에 붙여넣으면 실제 텍스트로 바로 테스트할 수 있습니다. 대부분은 전체 문자열을 검증하는 앵커(^...$) 패턴이고, 태그 제거·공백 정리 항목 두 개는 앵커가 없어 긴 텍스트 안의 모든 매칭을 찾아냅니다.
도구 열기 →
이메일 주소
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
URL(http/https)
^https?://[\w.-]+(?::\d+)?(?:/\S*)?$
전화번호(E.164 국제 형식)
^\+[1-9]\d{1,14}$
한국 휴대폰 번호
^01[016789]-?\d{3,4}-?\d{4}$
강력한 비밀번호(8자 이상, 대소문자·숫자·특수문자)
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\w\s]).{8,}$
사용자명(3~16자, 영문·숫자·밑줄)
^[a-zA-Z0-9_]{3,16}$
URL 슬러그(케밥 케이스)
^[a-z0-9]+(?:-[a-z0-9]+)*$
UUID v4
^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
16진수 색상 코드
^#(?:[0-9a-fA-F]{3}){1,2}$
HTML 태그 제거
<[^>]+>
IPv4 주소
^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$
ISO 8601 날짜(YYYY-MM-DD)
^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$
24시간제 시각(HH:MM)
^([01]\d|2[0-3]):[0-5]\d$
미국 우편번호(ZIP)
^\d{5}(?:-\d{4})?$
신용카드 번호(형식 검사, 16자리 4자리씩)
^\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{1,4}$
중복 공백 축소
\s{2,}자주 묻는 질문
- 이 패턴들은 어떻게 쓰나요?
- 카드를 클릭하면 구분자(`/`)나 플래그 없이 순수 패턴 문자열만 복사됩니다. 정규식 도구의 Pattern 입력란에 붙여넣고 테스트 영역에 텍스트를 입력하면 매칭이 실시간으로 강조 표시됩니다. 플래그는 도구에서 따로 설정합니다(기본값 g는 첫 매칭에서 멈추지 않고 모든 매칭을 찾습니다).
- 이메일 패턴이 모든 유효한 주소를 잡아내나요?
- 아니요. 전체 RFC 5322 문법은 완전히 맞춘 패턴이 수십 줄에 달할 정도로 복잡합니다. 실무에서는 이런 실용적 패턴으로 명백한 오타나 빈 입력을 걸러내고, 실제로 존재하는 주소인지는 인증 메일 발송으로 확인합니다.
- 신용카드 패턴이 카드 번호의 유효성을 확인해 주나요?
- 아니요. 이 패턴은 16자리 숫자가 4자리씩(공백·하이픈 구분 허용) 묶여 있는지 형식만 확인합니다. 체크섬(Luhn 알고리즘) 검증은 하지 않고, Amex 같은 15자리 카드도 다루지 않습니다. 실제 유효성 검사는 결제 게이트웨이에 맡기세요.
- 비밀번호 패턴의 (?=...) 는 무엇인가요?
- 전방탐색(lookahead)입니다. 문자를 소비하지 않고 조건만 검사하기 때문에, 소문자·대문자·숫자·특수문자가 문자열 어디에 있든 순서와 무관하게 모두 존재하는지 확인할 수 있습니다. 순서를 강제하는 긴 패턴 하나보다 훨씬 읽기 쉽습니다.