냐냐한 IT/냐냐한 JavaScript

JavaScript - 숫자 -> 전화번호로 형식으로 변환 (000-0000-0000)

소소하냐 2022. 12. 18. 11:23

숫자를 전화번호 형식으로 변환해야 할 때 사용하는 함수입니다. 

(전화번호 형식은 통일시키고 싶은데 전화번호 입력란은 하나로 쓰고 싶을 경우 사용했습니다. 
 저장시 숫자가 아닌 문자는 제거 후 저장, 저장된 번호를 목록/상세 보기 등에 표시할 때는 전화번호 형식으로 변환) 

 

숫자만으로 이루어져 있거나, 

다른 문자 (예 : - , . , / 등) 포함 시 해당 문자 삭제 후 전화번호 형식 변환 후 반환합니다. 

 

코드

function regexTel(tel) {
    if (!tel) return "";
    // 숫자가 아닐 경우 제거
    var rtnTel = tel.replace(/[^\d]/g, "");

    if (rtnTel.length === 11) {
        // 000-0000-0000
        return rtnTel.replace(/(\d{3})(\d{4})(\d{4})/g, "$1-$2-$3");
    } else if (rtnTel.length === 10) {
        // 00-0000-0000, 000-000-0000
        return rtnTel.startsWith("02") ? rtnTel.replace(/(\d{2})(\d{4})(\d{4})/g, "$1-$2-$3") : rtnTel.replace(/(\d{3})(\d{3})(\d{4})/g, "$1-$2-$3");
    } else if (rtnTel.length === 9) {
        // 00-000-0000
        return rtnTel.replace(/(\d{2})(\d{3})(\d{4})/g, "$1-$2-$3");
    } else if (rtnTel.length === 8) {
        // 0000-0000
        return rtnTel.replace(/(\d{4})(\d{4})/g, "$1-$2");
    } else {
    	// 위 규칙에 맞는 것이 없을 경우 원문으로 반환 
        return tel;
    }
}

 

설명 

  • var rtnTel 변수 선언 : 조건에 맞지 않을 경우 원문으로 반환하기 위해 특수 문자 제거한 결과는 별도로 관리
  • /[^\d]/g : ^\d - 숫자가 아닌, g - 전체 문자열을 검색하고 모든 일치 항목을 반환 
  • length로 조건 : 전화번호 형식이 다양해서 조건문으로 처리
  • 조건에 일치하는 것이 없는 경우 : 원문(tel)으로 반환

실행 결과

위 내용, 개발자 도구 콘솔 창에서 실행 시 캡처