REACT
리액트_자바스크립트_연락처 10자리 11자리 12자리 지역번호02 정규식
쫑나리
2023. 9. 19. 17:50
728x90
반응형
SMALL
startsWith
인풋박스를 3개로 나누지 않고 타입을 text로 받되,
숫자만 입력을 받고,
형태에 맞게 하이픈이 자동 입력될 수 있도록 하고 싶었습니당
3번째 자리가 입력되면 뒤부터 - 하이픈 일단 생성
연락처가 12자리라면 4번째 뒤부터 - 이 붙도록
10자리를 쓴다면 두 개의 경우 (02로 시작하는 경우와 아닌경우)
시작이 02라면 02-0000-0000 형태로, 02가 아니고 10자리라면 000-000-0000 형태로,
그래서 앞자리는 select가 좋....습니다ㅎㅎㅎㅎㅎㅎㅎ
const [phone, setPhone] = useState('');
const handlePhoneChange = (event) => {
let value = event.target.value.replace(/\D/g, ''); //숫자 입력만 받기
if (value.length > 12) { //하이픈 제외 총 길이 12자리
value = value.slice(0, 12);
}
let formattedValue = '';
if (value.length === 12) { //숫자가 12자리라면
const part1 = value.slice(0,4);
const part2 = value.slice(4,8);
const part3 = value.slice(8,12)
formattedValue += part1 + '-' + part2 + '-' + part3;
} else if (value.length === 10) {
let part1;
let part2;
let part3;
if(value.startsWith('02')) { // 첫 두 자리가 '02'인 경우
part1 = value.slice(0,2);
part2 = value.slice(2,6);
part3 = value.slice(6);
formattedValue += part1 + '-' + part2 + '-' + part3;
} else { // 그 외의 경우
part1 = value.slice(0,3);
part2 = value.slice(3,6);
part3= value.slice(6);
formattedValue += part1 + '-' + part2 + '-' + part3;
}
} else if (value.length > 3) { //3자리 입력 직후 하이픈이 생성
const part1 = value.slice(0,3);
const part2 = value.slice(3,7);
const part3 = value.slice(7,11)
formattedValue += part1 + '-' + part2 + '-' + part3;
} else {
formattedValue = value;
}
setPhone(formattedValue);
};
오늘은 그만 안녕~! 쉬어 나리!!
728x90
반응형
LIST