반응형
2025.04.22 - [Programing/javascript] - 날짜 형식 유효성 검사 함수 글의 응용 코드입니다.
회원가입, 본인 확인, 나이 계산 등의 기능을 구현할 때 생년월일 입력값이 실제 존재하는 날짜인지, 미래의 날짜는 아닌지 검증하는 절차는 매우 중요합니다. 이 글에서는 YYYYMMDD 형식의 생년월일 문자열이 올바른지 확인하는 isValidBirthDate 함수의 동작 방식을 설명합니다.
✨ 함수 코드 원문
function isValidBirthDate(input) {
const BIRTHDATE_PATTERN = /^\d{8}$/;
if (!BIRTHDATE_PATTERN.test(input)) return false;
const [year, month, day] = [
parseInt(input.slice(0, 4), 10),
parseInt(input.slice(4, 6), 10),
parseInt(input.slice(6, 8), 10)
];
const date = new Date(year, month - 1, day);
const isSameDate =
date.getFullYear() === year &&
date.getMonth() === month - 1 &&
date.getDate() === day;
const isNotFuture = date <= new Date();
return isSameDate && isNotFuture;
}
✨ 검증 단계 요약
1. 형식 검사 (정규표현식)
- ^\d{8}$: 숫자 8자리만 허용되는 형식 (YYYYMMDD)
- 예: 19900101, 20231231 ✅ / 1990-01-01, 900101 ❌
2. 날짜 존재 여부 확인
- 문자열에서 연/월/일을 분리해 Date 객체를 생성
- new Date()는 유효하지 않은 날짜를 자동으로 보정하므로, 원래 입력한 값과 객체의 구성 값이 일치하는지 역검증
3. 미래 날짜 여부 확인
- date <= new Date() 조건으로 미래의 날짜를 차단
✨ 사용 예시
isValidBirthDate('19900101'); // true → 유효한 과거 날짜
isValidBirthDate('20240229'); // true → 윤년 2월 29일
isValidBirthDate('20230229'); // false → 2023년은 윤년 아님
isValidBirthDate('20500101'); // false → 미래 날짜
isValidBirthDate('19901301'); // false → 13월은 없음
isValidBirthDate('19900230'); // false → 2월은 30일 없음
isValidBirthDate('1990011a'); // false → 숫자가 아님
isValidBirthDate('1990-01-01'); // false → 하이픈 포함
✨ 결론
isValidBirthDate 함수는 형식, 날짜 존재 여부, 미래 날짜 차단을 모두 포함한 생년월일 유효성 검증을 수행합니다. 실제 서비스에서 생년월일 입력값을 안전하게 처리하기 위한 기본 도구로, 프론트엔드와 백엔드 모두에 적용하기 적합합니다.
반응형
'Programing > javascript' 카테고리의 다른 글
| javascript 비밀번호 유효성 검사 (0) | 2025.04.22 |
|---|---|
| javascript 이메일 유효성 검사 (0) | 2025.04.22 |
| 국가별 여권번호 유효성 검사 (0) | 2025.04.22 |
| 윤년 기준으로 날짜 선택 옵션을 자동 변경하는 함수 (0) | 2025.04.22 |
| 날짜 범위 형식 유효성 검사 함수 (1) | 2025.04.22 |
| 날짜 형식 유효성 검사 함수 (0) | 2025.04.22 |
| URL 형식 유효성 검사 함수 (0) | 2025.04.22 |
| 휴대폰 번호 유효성 검사 JavaScript (1) | 2025.04.21 |