본문 바로가기

정규식 자주 쓰는 패턴 모음 - 실무에서 바로 복붙하는 핵심 정리

이메일, 전화번호, URL 등 실무에서 매일 쓰는 정규식 자주 쓰는 패턴을 한곳에 정리했습니다. 복사해서 바로 사용하세요.


정규식이 필요한 이유

폼 입력값을 검증하거나 로그 파일에서 특정 패턴을 찾아야 할 때, 매번 조건문을 길게 작성하고 계신가요? 정규식 자주 쓰는 패턴 몇 가지만 익혀두면 수십 줄의 코드를 한 줄로 줄일 수 있습니다.

정규표현식(Regular Expression)은 문자열에서 특정 패턴을 찾고, 치환하고, 검증하는 데 사용하는 표현 방법입니다. 처음엔 복잡해 보이지만, 자주 쓰는 패턴 위주로 익히면 실무 적용이 빠릅니다. 이 글에서는 실제로 가장 많이 사용되는 패턴을 카테고리별로 정리했습니다.

정규식 기본 문법 요약

기호의미예시
.임의의 한 문자a.c → abc, aXc
*앞 문자 0회 이상 반복ab* → a, ab, abb
+앞 문자 1회 이상 반복ab+ → ab, abb
?앞 문자 0회 또는 1회colou?r → color, colour
\d숫자 [0-9]\d{3} → 123
\w영문, 숫자, 밑줄\w+ → hello_1
\s공백 문자a\sb → a b
^문자열 시작^Hello
$문자열 끝world$
[abc]문자 클래스[aeiou] → 모음 매칭

이메일과 전화번호 검증 패턴

회원가입 폼에서 가장 먼저 필요한 것이 이메일과 전화번호 검증입니다. 아래는 실무에서 바로 사용할 수 있는 패턴입니다.

이메일 주소 검증

가장 널리 쓰이는 이메일 검증 패턴입니다.

RFC 5322 표준을 완벽히 구현하려면 훨씬 복잡한 패턴이 필요하지만, 실무에서는 위 패턴으로 대부분의 케이스를 처리할 수 있습니다.

전화번호 검증

한국 전화번호 형식에 맞춘 패턴입니다.

  • 휴대폰: ^01[016789]-?\d{3,4}-?\d{4}$
  • 일반 전화: ^0\d{1,2}-?\d{3,4}-?\d{4}$
  • 하이픈 포함/미포함 모두 허용: 010-1234-5678, 01012345678 둘 다 매칭
참고: 전화번호 패턴에서 하이픈을 -?로 처리하면, 사용자가 하이픈을 넣든 안 넣든 모두 유효하게 검증됩니다. 저장 시에는 하이픈을 제거한 숫자만 보관하는 것이 일반적입니다.

URL과 IP 주소 패턴

웹 개발에서 URL 유효성 검사와 IP 주소 필터링은 빈번하게 필요합니다. 정규식 자주 쓰는 패턴 중에서도 URL과 IP 관련 패턴은 보안과 직결되기 때문에 정확한 사용이 중요합니다.

URL 검증

^https?:\/\/(www\.)?[a-zA-Z0-9-]+(\.[a-zA-Z]{2,})+(\/[^\s]*)?$

이 패턴은 http와 https 프로토콜을 모두 허용하고, www 접두사는 선택 사항으로 처리합니다. 경로(path)까지 포함하여 검증할 수 있습니다.

IP 주소 검증

유형패턴매칭 예시
IPv4 기본^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$192.168.0.1
IPv4 엄격^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$0~255 범위만 허용
사설 IP^(192\.168|10\.|172\.(1[6-9]|2\d|3[01]))192.168.x.x, 10.x.x.x

기본 패턴은 999.999.999.999도 통과시키므로, 실무에서는 엄격한 패턴을 권장합니다.

문자열 처리에 유용한 패턴

데이터 정제, 로그 분석, 텍스트 전처리에서 자주 사용하는 패턴들입니다.

공백 및 특수문자 처리

  • 앞뒤 공백 제거: ^\s+|\s+$ - trim 함수와 동일한 효과
  • 연속 공백을 하나로: \s{2,} → 치환 대상을 공백 1개로 설정
  • HTML 태그 제거: <[^>]*> - 단순 태그 제거용(중첩 태그에는 파서 사용 권장)
  • 한글만 추출: [가-힣]+
  • 숫자만 추출: \d+

날짜 형식 검증

날짜 관련 패턴은 프로젝트마다 형식이 다르므로, 상황에 맞게 선택합니다.

  • YYYY-MM-DD: ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
  • YYYY/MM/DD: ^\d{4}\/(0[1-9]|1[0-2])\/(0[1-9]|[12]\d|3[01])$
  • YYYYMMDD: ^\d{4}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])$

정규식은 날짜의 형식만 검증할 뿐, 2월 30일 같은 논리적 오류까지 잡아주지는 않습니다. 형식 검증 후에는 반드시 날짜 라이브러리로 유효성을 한 번 더 확인하세요.

비밀번호와 입력값 검증 패턴

보안이 중요한 입력값 검증 패턴입니다. 특히 비밀번호 정책은 서비스마다 기준이 다르므로, 조합해서 사용합니다.

비밀번호 강도 검증

조건패턴설명
최소 8자.{8,}길이만 체크
영문 + 숫자^(?=.*[A-Za-z])(?=.*\d).{8,}$영문, 숫자 각 1개 이상
영문 + 숫자 + 특수문자^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&]).{8,}$3종 조합 필수
대문자 포함^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$대소문자 구분 포함

위 패턴에서 사용된 (?=...)는 전방 탐색(lookahead)이라는 기법입니다. 실제 매칭에는 포함되지 않지만, 해당 조건이 충족되는지 확인합니다. 비밀번호처럼 여러 조건을 동시에 만족해야 할 때 유용합니다.

기타 입력값 검증

  • 한글 이름(2~5자): ^[가-힣]{2,5}$
  • 사업자등록번호: ^\d{3}-\d{2}-\d{5}$
  • 주민등록번호 형식: ^\d{6}-[1-4]\d{6}$
  • 우편번호(5자리): ^\d{5}$

개발 과정에서 해시값이나 체크섬을 다루는 경우, 정규식으로 형식을 검증하기도 합니다. 예를 들어 SHA-256 해시 형식은 ^[a-fA-F0-9]{64}$로 확인할 수 있는데, 해시값을 직접 생성해야 한다면 해시 생성기 같은 온라인 도구를 활용하면 빠르게 테스트할 수 있습니다.

팁: 정규식 패턴을 작성했다면 반드시 정상 케이스와 비정상 케이스 양쪽 모두 테스트하세요. 예를 들어 이메일 패턴이라면 유효한 이메일 5개, 잘못된 이메일 5개를 준비해서 검증하는 습관이 버그를 크게 줄여줍니다.

정규식 실전 활용 팁

정규식 자주 쓰는 패턴을 알아도, 실전에서 효율적으로 쓰려면 몇 가지 원칙이 필요합니다.

성능을 고려한 작성법

탐욕적(greedy) vs 게으른(lazy) 매칭을 구분하세요. .*는 가능한 많이 매칭하고, .*?는 가능한 적게 매칭합니다. HTML 태그 내용을 추출할 때 <div>.*</div>를 쓰면 마지막 닫는 태그까지 한 번에 잡히므로, <div>.*?</div>로 작성해야 합니다.

자주 하는 실수 3가지

1. 이스케이프 누락: 마침표(.)는 정규식에서 '임의의 문자'를 의미합니다. 실제 마침표를 매칭하려면 \.으로 이스케이프해야 합니다.

2. 앵커(^, $) 미사용: 부분 매칭이 아닌 전체 문자열 검증이 목적이라면, 반드시 시작(^)과 끝($) 앵커를 붙이세요. 없으면 문자열 어딘가에 패턴이 포함되기만 해도 통과됩니다.

3. 과도한 복잡도: 하나의 정규식으로 모든 것을 해결하려 하지 마세요. 복잡한 검증은 여러 단계로 나누는 것이 유지보수에 유리합니다.

활용할 수 있는 테스트 도구

작성한 정규식이 의도대로 동작하는지 확인하려면 온라인 테스터를 활용하세요. regex101.com은 패턴별 설명까지 제공해서 학습용으로도 좋고, 각 프로그래밍 언어(Python, JavaScript, Go 등)별로 엔진을 선택할 수 있어 실무 테스트에도 적합합니다.

오늘 정리한 패턴 중 자신의 프로젝트에 필요한 것부터 하나씩 적용해 보세요. 처음에는 기본 패턴을 복사해서 쓰다가, 점차 프로젝트에 맞게 수정하는 과정에서 자연스럽게 정규식 실력이 올라갑니다. 자주 쓰는 패턴은 코드 스니펫이나 유틸리티 파일로 관리해 두면, 팀 전체의 생산성까지 높일 수 있습니다.

3일 무료체험큰손탐지기, 지금 바로 시작하세요

설치 없이 웹에서 바로 사용 가능 · PC & 모바일 지원

무료체험 시작
카카오톡 상담