Development•
2026-02-19
•10 min
•alltools.one Team
regexregular-expressionsdevelopmentpatternsvalidation
정규표현식 치트시트: 모든 개발자에게 필요한 패턴
정규표현식은 패턴을 배우기 전에는 마법처럼 느껴집니다. 하지만 한번 배우면 텍스트 검색, 검증, 데이터 추출, 문자열 조작에 필수 불가결해집니다.
패턴을 가져와서 정규표현식 테스터에 붙여넣어 실험하고, 필요에 맞게 수정하세요.
핵심 정규표현식 구문
문자 클래스
| 패턴 | 매칭 대상 | 예시 |
|---|---|---|
. | 개행 외 모든 문자 | a.c는 "abc", "a1c"에 매칭 |
\d | 모든 숫자 (0-9) | \d{3}는 "123"에 매칭 |
\w | 단어 문자 (문자, 숫자, 밑줄) | \w+는 "hello_1"에 매칭 |
\s | 공백 | \s+는 스페이스에 매칭 |
[abc] | a, b, c 중 하나 | [aeiou]는 모음에 매칭 |
[^abc] | a, b, c를 제외한 모든 문자 | [^0-9]는 비숫자에 매칭 |
[a-z] | 범위 내 모든 문자 | [A-Za-z]는 문자에 매칭 |
수량자
| 패턴 | 의미 |
|---|---|
* | 0개 이상 |
+ | 1개 이상 |
? | 0개 또는 1개 |
{n} | 정확히 n번 |
{n,m} | n과 m 사이 |
앵커와 그룹
| 패턴 | 의미 |
|---|---|
^ | 문자열 시작 |
$ | 문자열 끝 |
\b | 단어 경계 |
(abc) | 캡처 그룹 |
(?:abc) | 비캡처 그룹 |
a|b | 교대 (또는) |
(?=abc) | 긍정 전방탐색 |
실용적인 패턴
이메일 검증
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
URL 매칭
https?:\/\/[\w.-]+(?:\.[a-zA-Z]{2,})(?:\/[\w./?%&=-]*)?
비밀번호 강도
최소 8자, 대문자 하나, 소문자 하나, 숫자 하나, 특수 문자 하나:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*])[A-Za-z\d!@#$%^&*]{8,}$
강력한 비밀번호 생성에는 비밀번호 생성기를 사용하세요.
16진수 색상 코드
^#?([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$
색상 포맷 간 변환은 색상 변환기를 사용하세요.
UUID 검증
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
유효한 UUID 생성은 UUID 생성기를 사용하세요.
정규표현식 성능 팁
- 구체적으로 —
[a-zA-Z]가.보다 빠릅니다 - 치명적 백트래킹 방지 —
(a+)+같은 중첩 수량자는 지수적 시간을 유발합니다 - 값이 필요하지 않으면 비캡처 그룹 사용
- 패턴에 앵커 추가 —
^pattern$이 앵커 없는 검색보다 빠릅니다 - 엣지 케이스로 테스트 — 배포 전에 정규표현식 테스터를 사용하세요
자주 묻는 질문
*와 +의 차이점은 무엇인가요?
*는 0개 이상에 매칭하고, +는 최소 1개를 요구합니다. ab*c는 "ac"에 매칭하지만 ab+c는 매칭하지 않습니다.
정규표현식을 대소문자 무시로 만들려면?
i 플래그를 사용하세요: JavaScript에서 /pattern/i, Python에서 re.IGNORECASE.
관련 리소스
- 이메일 검증을 위한 정규표현식 — 프로덕션에서 작동하는 패턴
- 정규표현식 테스터 도구 — 실시간 패턴 테스트 및 디버깅
- 비밀번호 생성기 — 정규표현식 규칙에 맞는 비밀번호 생성
- UUID 생성기 — 유효한 UUID 생성