2016-12-25 1 views
0

나는 JavaScript에서 다음과 같은 함수를 사용합니다. 미국 전화 번호의 텍스트를 가져 와서 유효하지 않은 값이 없는지 테스트 한 다음 같은 텍스트 상자.JavaScript 확장명이 n 인 문자를 사용하여 전화 번호를 지정하는 정규식

잘 작동하지만 전화 확장을 수락해야합니다. 전화 내선 번호는 기본적으로 그대로 전달되어야하므로 모든 문자가 가능합니다. 즉, 공백으로 시작 하든지, *, 내선으로 시작하든 상관 없습니다. 나는 그 모든 경우에 대해 걱정하지 말 것을 요청 받았고, 내가 말했듯이, 그 연장이 막 통과하도록 요청 받았다. 내 상사에게 확장을위한 또 다른 텍스트 상자가있을 수 있다고 말했지만, 그가 원하는 것은 아닙니다.

그래서 n 개의 숫자에 대해 정규 표현식을 작성하는 것은 어렵지 않습니다. 실제로 염두에 두는 부분은 실제로 전화 번호 형식을 지정하는 코드에서 이러한 문자를 잡는 방법입니다.

나는 유효한 전화 번호 뒤에 문자를 붙잡을 수있을 것이라고 생각하지만 솔직히 전화 번호는 정규식 검사를 받았고 입력 길이가 다를 수 있음을 명심해야한다. . 이견있는 사람?

어떤 도움을 주셔서 감사합니다. 모든

function formatPhone(phoneObj) { 
var phoneStr = phoneObj.value, 
    s2 = (""+phoneStr).replace(/\D/g, ''), 
    m = s2.match(/^(\d{3})?[- ]??[\s]?(\d{3})?[\s]?(\d{4})$/); 
    phoneObj.value = (!m) ? null : "(" + m[1] + ") " + m[2] + "-" + m[3]; 
} 

답변

0

첫째 : 여기에 마음에 확장 모든 문자의 모든 숫자가 될 수있는 요구 사항을 유지, 수용하고 전화 번호를 포맷 확장을 반환 조정해야하는 현재의 코드이며, 문자열을 소문자로 변환하거나 대소 문자를 구분하지 않는 정규 표현식을 사용할 수 있으므로 대소 문자를 구분할 필요가 없습니다.

전화 번호를 구문 분석 할 수있는 다른 방법이있을 수 있지만, 지정된 정규 표현식이 같은 변화를 만들 수 있습니다 : 여기

^(\d{3})?[- ]??[\s]?(\d{3})?[\s]?(\d{4})(\s+(ext|\*)?\s*\d{4})?$ 

내가 전에 ext 또는 * 뒤에 공백이 있다고 가정합니다. 희망이 당신에게 아이디어를 제공하고 당신의 요구 사항에 맞게 그것을 향상시킬 수 있습니다.

또한 이러한 답변을 확인하십시오

+0

감사합니다. 하지만 내 질문에 대답하지 않습니다. 다시 읽으십시오. 언급했듯이 전화 서식 기능이 완료되면 확장을 위해 n 개의 문자를 n 개의 문자로 사용할 수 있어야합니다. 링크 된 질문은이 특정 문제를 해결하지 못합니다. –

+0

글쎄, 당신의 질문은 꽤 확장 성이'ext','*'또는'space'로 시작해야한다고 언급했기 때문에 그 부분에 대해서는 명확하게 이해하지 못했습니다. 다행 이군. –

+0

아니, 그것을 진술하지 않았다. 나는 그것이 무엇이든 시작할 수 있다고 말했다. 다시 읽습니다. 감사..... –

0

나는 그것을 알아 냈다. 나는 그것이 실제로보다 어려웠다 고 생각했다. 바보 나. 솔루션 :

function formatPhone(phoneObj){ 
    var phoneStr = phoneObj.value, 
    s2 = (""+phoneStr).replace(/\D/g, ''), 
    m = s2.match(/^(\d{3})?[- ]??[\s]?(\d{3})?[\s]?(\d{4})?(.*)?$/); 
    phoneObj.value = (!m) ? null : "(" + m[1] + ") " + m[2] + "-" + m[3]+ "x" + m[4]; 
} 
관련 문제