전화번호 입력시 자동으로 하이픈(-) 삽입하는 자바스크립트 코드
2021-03-05
정규식을 활용해서 전화번호 입력시에 자동으로 하이픈을 삽입하는 코드들이 많은데 실제 사용시에 내가 생각했던 순서로 하이픈이 삽입되지 않아서 간단히 작성해 보았다.
정규식을 활용한 코드
function phoneNumber(value) {
value = value.replace(/[^0-9]/g, "");
return value.replace(
/(^02.{0}|^01.{1}|[0-9]{3})([0-9]+)([0-9]{4})/,
"$1-$2-$3"
);
}
위 코드로 전화번호를 입력시에 아래와 같은 순서로 하이픈이 삽입된다. 뒷 4자리에 맞춰서 하이픈이 삽입되서 약간 어색해 보인다.
010
0101
01012
010123
0101234
010-1-2345
010-12-3456
010-123-4567
010-1234-5678
새로 작성한 코드
function phoneNumber(value) {
if (!value) {
return "";
}
value = value.replace(/[^0-9]/g, "");
let result = [];
let restNumber = "";
// 지역번호와 나머지 번호로 나누기
if (value.startsWith("02")) {
// 서울 02 지역번호
result.push(value.substr(0, 2));
restNumber = value.substring(2);
} else if (value.startsWith("1")) {
// 지역 번호가 없는 경우
// 1xxx-yyyy
restNumber = value;
} else {
// 나머지 3자리 지역번호
// 0xx-yyyy-zzzz
result.push(value.substr(0, 3));
restNumber = value.substring(3);
}
if (restNumber.length === 7) {
// 7자리만 남았을 때는 xxx-yyyy
result.push(restNumber.substring(0, 3));
result.push(restNumber.substring(3));
} else {
result.push(restNumber.substring(0, 4));
result.push(restNumber.substring(4));
}
return result.filter((val) => val).join("-");
}
010
010-1
010-12
010-123
010-1234
010-1234-5
010-1234-56
010-123-4567
010-1234-5678
앞에서 부터 하이픈이 삽입된다.
Comments