2010-03-22 2 views
2

javascript (및 PHP)를 사용하여 전화 번호 필드가있는 간단한 양식의 유효성을 검사합니다. 나는 그 필드가 단지 10 개의 문자 만 가지고 있는지 잘 검사하고있다. 그러나 그 필드가 10에서 11 개의 문자 사이에 있는지를 정말로 확인하고 싶다.길이가 10 - 11 자 사이의 숫자 유효성 확인

이유의 존재가, 어떤 사람들과 같이 숫자를 입력 :

 if (!(stripped.length == 10)) { 
      alert("Please enter a valid US phone number.") 
      return false 
     } 
: 1 555 555 5555 어떤 사람들이 여기이 555 (555) 5555

을하는 것은 내가 길이가 10 인 경우 확인을 위해 작동 할 수있을 것입니다

답변

2

간단한 대답에 체크를 추가하는 것입니다 경우 :

if (!(stripped.length == 10 || stripped.length == 11)) { ... } 
+0

감사 다니엘, 나는 실제로 당신이 대답을 게시 직후에 그것을 알아 냈다. –

2

그럼 당신이 요구하는지 무엇을해야 할 일 :

if (stripped.length != 10 && stripped.length != 11) { 
    alert("Please enter a valid US phone number.") 
    return false 
} 

여전히 많은 조건을 쉽게 확인할 수 있으므로 정규식을 사용하여 전화 번호의 유효성을 검사 할 수 있습니다.

(당신이 해부 도움이 정규 표현식을 이해 나는 강력하게 추천하는) RegEx Buddy에서 대출 :

var phoneRegex = /\(?\b[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}\b/;​​ 

var phone = '3334445555'; 

if(!phone.match(phoneRegex)){ 
    alert('please enter a valid phone number'); 
} 
​ 

일치 3334445555, 333.444.5555, 333-444-5555, (333) 444 5555, (333) 444 5555 및 이들의 모든 조합. pawel @

편집

좋은 지적을합니다. 유효성을 검사하는 가장 좋은 방법은 먼저 숫자 이외의 모든 문자를 제거하는 것입니다. 그런 다음 올바른 자릿수가 있는지 확인한 다음 제거 된 균일 한 번호를 서버에 저장하십시오. 정규식은 더 큰 텍스트 블록에 숨어있는 유효한 전화 번호를 찾는 경우에만 이상적입니다. 이건 정말 현명한 선택이 아니에요 ...

+0

RegEx 버디에 대한 멋진 제안과 링크, 매우 유용한 것들에 감사드립니다. –

+1

형식 규칙은 중요하지 않습니다. 전화 번호를 peple이 입력 한 방식으로 저장하고 싶지 않으므로 대부분의 가능한 규칙에 대한 RegExp 유효성 검사는별로 유용하지 않습니다. 전화 번호의 유효성을 검사하기 위해 RegExp를 사용해야한다면 phoneNumber.replace (/ \ D/g, '');와 같이 숫자가 아닌 숫자를 모두 제거해야합니다. 이며 길이가 10 자인지 11 자인지 확인하십시오. 데이터베이스에이 숫자를 삽입하는 동안 동일하게 수행하십시오. 1. 고정 크기 Int 열 (varchar를 결정하기 어렵지 않음) 및 2. 쉬운 방법으로 표시 할 전화 번호를 일률적 인 방식으로 형식화합니다. – pawel

1

글자 10 자 또는 1 자 다음에 10자를 넣을 수 있습니다.

if (!(stripped.length === 10 || stripped.length === 11 && stripped.charAt(0) === "1")) { 
    // invalid... 
} 
+0

매우 사실, 내 질문에 대한 가치있는 추가 주셔서 감사합니다. –

0

나는 그것을 알아 냈다. JS 101의 빠른 새로 고침이 필요했다. 나는 실제로 OR을 사용하려고 시도했다. 그러나 이것을 좋아하지 않았다 10||11 그것은 작동하지 않았다.

이 작동 :

if (!(stripped.length == 10 || stripped.length == 11)) { 
    alert("Please enter a valid US phone number.") 
    return false 
} 
+0

LOL, 내 질문에 대답 할 때 페이지를 새로 고치지 않았습니다. 어떤 사람들이 저를 위해 그것을 응답 한 것처럼 보입니다! –

+0

어느 쪽이든, 자신의 질문에 대답하는 것은 나쁜 습관입니다. 문제의 해결책을 찾았다는 것을 질문에 편집 했어야합니다. 다음에 기억하십시오.) –