50 lines
2.3 KiB
JavaScript
50 lines
2.3 KiB
JavaScript
|
|
|
|
// 유효한 번호인지 확인하는 함수
|
|
function isValidPhoneNumber(phone) {
|
|
// 숫자만 추출
|
|
const numberOnly = phone.replace(/\D/g, '');
|
|
|
|
// 유효한 형식 체크
|
|
return (
|
|
(numberOnly.startsWith("010") && numberOnly.length === 11) || // 010으로 시작하고 11자리
|
|
(/^01[1-9]/.test(numberOnly) && numberOnly.length === 10 && // 011~019로 시작하고 10자리
|
|
!/^01[2-4]/.test(numberOnly)) || // 012, 013, 014는 유효하지 않음
|
|
(numberOnly.startsWith("050") && numberOnly.length === 12) // 050X로 시작하고 12자리
|
|
);
|
|
}
|
|
|
|
// 유효성 후 포맷 맞추는 함수
|
|
function formatPhoneNumber(phone) {
|
|
if (typeof phone !== 'string') {
|
|
phone = String(phone); // phone을 문자열로 변환
|
|
}
|
|
// 숫자만 남기기
|
|
let cleanedPhone = phone.replace(/\D/g, ''); // 모든 숫자가 아닌 문자 제거
|
|
// console.log('cleanedPhone : ', cleanedPhone);
|
|
|
|
// 앞에 0이 추가된 경우 처리
|
|
if (cleanedPhone.length === 10 && cleanedPhone.startsWith("10")) {
|
|
// 10으로 시작하는 10자리 번호는 앞에 0을 추가하여 11자리로 만듦
|
|
cleanedPhone = "0" + cleanedPhone;
|
|
}else if (cleanedPhone.length === 9 && (cleanedPhone.startsWith("11") || cleanedPhone.startsWith("16") || cleanedPhone.startsWith("19"))) {
|
|
// 11, 16, 19로 시작하는 9자리 번호는 앞에 0을 추가하여 10자리로 만듦
|
|
cleanedPhone = "0" + cleanedPhone;
|
|
}
|
|
|
|
// 번호 형식 변환
|
|
if (cleanedPhone.startsWith("010") && cleanedPhone.length === 11) {
|
|
// 010-1234-5678 형식
|
|
return cleanedPhone.substring(0, 3) + '-' + cleanedPhone.substring(3, 7) + '-' + cleanedPhone.substring(7);
|
|
} else if ((/^01[1-9]/.test(cleanedPhone)) && cleanedPhone.length === 10) {
|
|
// 01X-123-5678 형식
|
|
return cleanedPhone.substring(0, 3) + '-' + cleanedPhone.substring(3, 6) + '-' + cleanedPhone.substring(6);
|
|
} else if (cleanedPhone.startsWith("050") && cleanedPhone.length === 12) {
|
|
// 050X-1234-5678 형식
|
|
return cleanedPhone.substring(0, 4) + '-' + cleanedPhone.substring(4, 8) + '-' + cleanedPhone.substring(8);
|
|
}
|
|
|
|
// 원본 반환 (표준 형식으로 변환되지 않으면)
|
|
return phone;
|
|
}
|