2014-04-09 3 views
1

내가 자바 스크립트와 HTML에 자동 형식으로 입력을 시도하고, 그것은 거의 완료, 난 XXX-XXX-XXXX로 형식을 필요로하지만, 나는이 코드자동 올바른 전화 번호 형식 입력

this.value = this.value.replace(/(\d{3})\-?/g,'$1-'); 
에게 있습니다

youy가 볼 수 있듯이 xxx-xxx-xxx는 자동으로 서식을 지정하지만 끝에 4 자리가 필요합니다.

모든 요망? 당신을 도울 수있는

답변

1

샘플 코드 :

var phone = '(555) 666-7777'; 

// First clean your input 
phone = phone.replace(/[^\d]/g, ''); 
// Check the length of the phone 
if(phone.length == 10){ 
    // Now we can format the phone 
    phone = phone.substring(0,3)+'-'+phone.substring(3,6)+'-'+phone.substring(6, 10); 
    // Optionally 
    //phone = phone.replace(/(\d{3})(\d{3})/, '$1-$2-'); 
} 
else { 
    // whatever you want to tell the user 
} 
4

이 정규 표현식을 시도해보십시오

'1234567890'.replace(/(\d{3}(?!\d?$))\-?/g, '$1-'); // 123-456-7890 

부분 (?!\d?$)는 부정적 예측이다. $ 문자열의 끝에서 다른 숫자 (네 번째) (단, 반드시 ? 일 필요는 없음)가 나오지 않는 경우에만 정규 표현식이 세 자리 숫자와 일치 할 수 있습니다.

0$이 계속 표시되므로 789 그룹과 일치하지 않습니다.

+0

awsome, 내가 필요한 것입니다. – user3516479

2

간단히 :. replace(/(\d{3})(\d{3})(\d{4})\-?/g,'$1-$2-$3');

+0

실제로 매우 간단한 해결책입니다! – dfsq

+0

더 읽기가 편리합니다. – Arthur

1

위의 "replace"정규 표현식에 버그가있는 것 같습니다. 10 자리 숫자를 입력하면 형식이 올바르게 표시됩니다 (예 : "(123) 456-7890"). 그런 다음 필드 내용을 두 번 또는 세 번 클릭하여 선택하고 값을 다시 입력하십시오. 처음 두 자릿수가 바뀝니다. 그래서 1 2 3을 입력하면 2 1 3 ...

+1

안녕하세요, S-O에 오신 것을 환영합니다. 이것은 실제로 대답이 아니기 때문에 질문에 대한 주석이어야합니다. –