날짜 정규식 생성기·테스터 (YYYY-MM-DD, MM/DD/YYYY, ISO 8601)
YYYY-MM-DD, MM/DD/YYYY, DD.MM.YYYY, ISO 8601 날짜·시간 정규식을 월별 일수와 윤년까지 반영해 만들고 JS, PHP, Python, Java, .NET 코드로 복사합니다.
Python, .NET, 일부 Java 모드에서는 \d가 아랍-인도 숫자 등 다른 문자의 숫자에도 일치하므로 \d 대신 [0-9]를 씁니다.
(?=…) 전방 탐색이 먼저 값 전체를 검사하고, 이름 있는 그룹이 각 부분을 뽑아냅니다. 전방 탐색은 다섯 언어 모두에서 동작합니다.
윤년은 그레고리력 규칙을 따릅니다. 2000년과 2024년에는 2월 29일이 있고 1900년과 2023년에는 없습니다.
| 줄 | 값 | 결과 | 구성 요소 또는 이유 |
|---|---|---|---|
| 1 | 2024-02-29 | 일치 | year=2024, month=02, day=29 |
| 2 | 2023-02-29 | 불일치 | 2023년은 윤년이 아닙니다 |
| 3 | 2026-04-31 | 불일치 | 04월은 30일까지만 있습니다 |
| 4 | 2026-12-01 | 일치 | year=2026, month=12, day=01 |
| 5 | 1900-02-29 | 불일치 | 1900년은 윤년이 아닙니다 |
| 6 | 2000-02-29 | 일치 | year=2000, month=02, day=29 |
| 7 | 2026-13-01 | 불일치 | 13월은 존재하지 않습니다 |
| 8 | 26-01-01 | 불일치 | 연도는 네 자리여야 합니다 |
| 부분 | 규칙 |
|---|---|
| year | 네 자리. 2월 29일의 윤년 규칙: 4로 나누어떨어지는 해, 단 백 년 단위는 400으로 나누어떨어질 때만 |
| month | 01–12 |
| day | 달에 따라 최대 31, 30 또는 28/29 |
날짜 정규식은 얼마나 엄격하게 검사할지부터 정해야 합니다. \d{4}-\d{2}-\d{2}는 2026-19-45도 통과시키지만, 월별 일수와 윤년을 아는 패턴은 2023-02-29를 거부하고 2024-02-29를 받아들입니다. 이 생성기는 ISO 8601, 미국식, 유럽식, 한국식, 붙여 쓴 날짜, RFC 3339 날짜시간, 시각 등 쓰는 형식에 맞는 패턴을 원하는 엄격도로 만들어 줍니다. 이름 있는 그룹과 JavaScript, PHP, Python, Java, C#용 코드를 함께 제공하고 입력한 값으로 바로 테스트합니다.
사용 방법
- 날짜 또는 시각 형식을 고릅니다.
- 패턴의 엄격도를 고릅니다. "실제 날짜"는 윤년까지 반영합니다.
- 언어를 고르고, 값 전체를 검증할지 텍스트에서 날짜를 찾을지 정합니다.
- 테스트 값을 붙여넣고 어떤 값이 왜 일치하거나 일치하지 않는지 확인합니다.
계산식
윤년 = 4로 나누어떨어지는 해, 단 백 년 단위는 400으로 나누어떨어져야 함 → (?:\d\d(?:0[48]|[2468][048]|[13579][26])|(?:0[048]|[2468][048]|[13579][26])00)
실제 날짜 패턴은 세 개의 월 그룹, 즉 31일까지 있는 달(01, 03, 05, 07, 08, 10, 12), 30일까지 있는 달(04, 06, 09, 11), 28일까지인 2월과, 윤년의 2월 29일을 위한 별도의 분기로 만듭니다. 이름 있는 그룹을 쓸 때는 그룹이 연·월·일로 나누기 전에 전방 탐색 (?=…)이 값 전체를 먼저 검사합니다. 어느 언어에서나 ASCII 숫자만 일치하도록 \d 대신 [0-9]를 씁니다. 검증용 코드는 문자열 전체 일치(^…$로 test, fullmatch, matches, \z)를 쓰므로 끝의 줄바꿈은 허용되지 않습니다.
예시
YYYY-MM-DD와 "실제 날짜"에서 샘플 목록은 3개가 일치합니다. 2024-02-29(2024년은 윤년), 2026-12-01, 2000-02-29(2000은 400으로 나누어떨어짐)입니다. 2023-02-29는 윤년이 아니라서, 2026-04-31은 4월이 30일까지라서, 1900-02-29는 백 년 단위인데 400으로 나누어떨어지지 않아서, 2026-13-01은 13월이 없어서, 26-01-01은 연도가 네 자리여야 해서 일치하지 않습니다.
자주 묻는 질문
날짜를 정규식으로 검증해도 되나요?
정규식은 형식을 확인하거나 폼과 로그에서 빠르게 검사할 때 좋습니다. 중요한 곳에서는 시간대와 달력 규칙을 아는 언어의 날짜 라이브러리로도 날짜를 해석하세요.
\d를 쓰지 않는 이유는 무엇인가요?
Python 3, .NET, 유니코드 플래그를 쓴 Java에서는 \d가 ٣나 ३ 같은 다른 문자의 숫자에도 일치합니다. [0-9]는 0–9에만 일치합니다.
문장 속 날짜에도 쓸 수 있나요?
네. "텍스트에서 날짜 찾기"를 고르세요. 이때 패턴은 더 긴 숫자 안에서는 일치하지 않으므로 12026-01-01에서 2026-01-01을 찾아내지 않습니다.
출처
최종 업데이트:
이 입력값이 담긴 페이지 주소: https://kakao.mobile/ko/tools/date-regex-tool/
인용·퍼가기
kakaoCalc. (2026, November 8). 날짜 정규식 생성기·테스터 (YYYY-MM-DD, MM/DD/YYYY, ISO 8601). https://kakao.mobile/ko/tools/date-regex-tool/
“날짜 정규식 생성기·테스터 (YYYY-MM-DD, MM/DD/YYYY, ISO 8601).” kakaoCalc, 8 Nov. 2026, kakao.mobile/ko/tools/date-regex-tool/.