75 lines
1.6 KiB
TypeScript
75 lines
1.6 KiB
TypeScript
/**
|
|
* 사업자등록번호 유효성 검사 유틸리티
|
|
*/
|
|
|
|
/**
|
|
* 사업자등록번호 포맷 검증 (000-00-00000 형식)
|
|
*/
|
|
export function validateBusinessNumberFormat(value: string): boolean {
|
|
if (!value || value.trim() === "") {
|
|
return false;
|
|
}
|
|
|
|
// 하이픈 제거
|
|
const cleaned = value.replace(/-/g, "");
|
|
|
|
// 숫자 10자리인지 확인
|
|
if (!/^\d{10}$/.test(cleaned)) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* 사업자등록번호 종합 검증 (포맷만 검사)
|
|
* 실제 국세청 검증은 백엔드에서 API 호출로 처리하는 것을 권장
|
|
*/
|
|
export function validateBusinessNumber(value: string): {
|
|
isValid: boolean;
|
|
message: string;
|
|
} {
|
|
if (!value || value.trim() === "") {
|
|
return {
|
|
isValid: false,
|
|
message: "사업자등록번호를 입력해주세요.",
|
|
};
|
|
}
|
|
|
|
if (!validateBusinessNumberFormat(value)) {
|
|
return {
|
|
isValid: false,
|
|
message: "사업자등록번호는 10자리 숫자여야 합니다.",
|
|
};
|
|
}
|
|
|
|
// 포맷만 검증하고 통과
|
|
return {
|
|
isValid: true,
|
|
message: "",
|
|
};
|
|
}
|
|
|
|
/**
|
|
* 사업자등록번호 포맷팅 (자동 하이픈 추가)
|
|
*/
|
|
export function formatBusinessNumber(value: string): string {
|
|
if (!value) return "";
|
|
|
|
// 숫자만 추출
|
|
const cleaned = value.replace(/\D/g, "");
|
|
|
|
// 최대 10자리까지만
|
|
const limited = cleaned.slice(0, 10);
|
|
|
|
// 하이픈 추가 (000-00-00000)
|
|
if (limited.length <= 3) {
|
|
return limited;
|
|
} else if (limited.length <= 5) {
|
|
return `${limited.slice(0, 3)}-${limited.slice(3)}`;
|
|
} else {
|
|
return `${limited.slice(0, 3)}-${limited.slice(3, 5)}-${limited.slice(5)}`;
|
|
}
|
|
}
|
|
|