모든 개발자가 마스터해야 할 정규식 패턴
정규식(regex)은 개발자 도구 상자에서 가장 강력한 도구 중 하나입니다. 절차적 코드로는 수십 줄이 필요한 작업을 간결한 패턴으로 텍스트를 검색, 검증 및 변환할 수 있습니다. 정규식 구문이 처음에는 난해해 보일 수 있지만, 핵심 패턴 세트를 마스터하면 대부분의 실제 사용 사례를 다룰 수 있습니다. 이 가이드는 반복적으로 사용하게 될 정규식 패턴을 소개하고 각 패턴의 작동 방식을 자세히 설명합니다.
정규 표현식 기초 복습
구체적인 패턴을 살펴보기 전에, 모든 정규식 패턴의 기초를 구성하는 메타문자를 빠르게 복습해 보겠습니다:
| 메타문자 | 의미 | 예제 |
|---|---|---|
| . | 임의의 단일 문자 | a.c는 abc, a1c, a c와 매칭 |
| * | 앞 문자 0회 이상 | ab*c는 ac, abc, abbc와 매칭 |
| + | 앞 문자 1회 이상 | ab+c는 abc, abbc와 매칭 |
| ? | 앞 문자 0회 또는 1회 | colou?r는 color, colour와 매칭 |
| ^ | 문자열 시작 | ^Hello는 시작 부분의 Hello와 매칭 |
| $ | 문자열 끝 | world$는 끝 부분의 world와 매칭 |
| [] | 문자 클래스 | [aeiou]는 모든 모음 문자와 매칭 |
| () | 캡처 그룹 | (ab)+는 ab, abab과 일치 |
| | | 교체 (OR) | cat|dog는 cat 또는 dog와 매칭 |
| \d | 숫자 [0-9] | \d{3}는 123과 매칭 |
| \w | 단어 문자 [a-zA-Z0-9_] | \w+는 hello_123과 매칭 |
| \s | 공백 문자 | a\sb는 a b와 매칭 |
1. 이메일 검증
기본 이메일 패턴
이 패턴은 이메일 주소의 기본 구조를 검증합니다: @ 앞에 하나 이상의 허용된 문자, 그 뒤에 최소 하나의 점이 있는 도메인 이름, 그리고 두 글자 이상의 최상위 도메인. 대부분의 유효하지 않은 형식을 포착하면서 합법적인 주소는 통과시킵니다.
매칭: user@example.com, john.doe+tag@company.co.uk
매칭 안 됨: user@, @example.com, user@.com
2. URL 검증
HTTP/HTTPS URL 패턴
이 패턴은 선택적 www 접두사가 있는 HTTP 및 HTTPS URL을 매칭하며, 도메인 이름과 선택적 경로를 포함합니다. s?는 https의 "s"를 선택적으로 만들고, (www\.)?는 www 접두사를 선택적으로 만듭니다. 경로 세그먼트 (\/[^\s]*)?는 도메인 이름 뒤에 공백 문자가 아닌 모든 문자를 허용합니다.
매칭: https://example.com, http://www.example.com/path/to/page
매칭 안 됨: ftp://example.com, example.com (프로토콜 없음)
3. 전화번호 검증
국제 전화번호
이 패턴은 E.164 국제 전화번호 형식을 따릅니다. 선택적 + 접두사를 허용하고, 첫 번째 숫자가 1-9(선행 0 없음)여야 하며, 총 최대 15자리 숫자를 허용합니다. 이는 국제적으로 전화번호를 저장하고 검증하는 가장 신뢰할 수 있는 형식입니다.
매칭: +14155552671, 442071838750
매칭 안 됨: +01xxxxxxxxx, 123
4. 비밀번호 강도
강력한 비밀번호 패턴
이 패턴은 강력한 비밀번호 정책을 강제합니다: 최소 8자, 최소 하나의 소문자, 하나의 대문자, 하나의 숫자 및 하나의 특수 문자 포함. (?=.*[...]) 구문은 긍정적 전방 탐색을 사용하여 각 문자 유형의 존재를 확인하며 문자를 소비하지 않습니다.
매칭: MyP@ss1word, Str0ng!Pass
매칭 안 됨: password, Password1, P@ss
정상 시력으로만 테스트하기: 색맹 시뮬레이터를 사용하여 적색맹, 녹색맹, 청색맹(가장 흔한 세 가지 색각 결함 유형) 사용자에게 디자인이 사용 가능한지 확인하세요.
IPv4 주소
이 패턴은 IPv4 주소를 검증하고 올바른 범위 검사를 수행합니다. 각 옥텟은 0에서 255 사이여야 합니다. 이 패턴은 교체 매칭을 사용합니다: 250-255(25[0-5]), 200-249(2[0-4]\d) 또는 0-199([01]?\d\d?). 이는 세 개의 점 뒤에 세 번 반복되고, 마지막으로 최종 옥텟에 한 번 더 사용됩니다.
매칭: 192.168.1.1, 10.0.0.1, 255.255.255.0
매칭 안 됨: 256.1.1.1, 192.168.1, 192.168.1.1.1
6. 날짜 형식 검증
YYYY-MM-DD (ISO 8601)
이 패턴은 ISO 8601 형식(YYYY-MM-DD)의 날짜를 검증합니다. 4자리 연도, 01-12 사이의 월, 01-31 사이의 일을 확인합니다. 이 패턴은 형식은 검증하지만 날짜의 논리적 유효성은 검증하지 않습니다(예: 2026-02-31 허용). 완전한 검증을 위해서는 날짜를 구문 분석하고 프로그래밍 방식으로 확인하세요.
매칭: 2026-05-20, 2025-01-01, 2024-12-31
매칭 안 됨: 2026-5-20, 2026-13-01, 26-05-20