2012-11-05 3 views
4

내가 happyJS를 사용하여 전화 확인JS : 숫자와 공백에 대한 정규식?

phone: function (val) { 
     return /^(?:[0-9]+$)/.test(val); 
    } 

을 위해 아래의 정규식을 사용하고있어 그러나이 숫자 만 할 수 있습니다. 나는 사용자뿐만 아니라

238 238 45383 

이유 return /^(?:[0-9 ]+$)/.test(val); 트릭을하고 있지 않은 모든 생각처럼 공백을 입력 할 수 있도록하려면?

/^(?=.*\d)[\d ]+$/.test(val) 

: 위의 성공 만이 내 제안 된 솔루션이다 regex example here

+4

'/^(? : [0-9] + $) /. test ("238 238 45383");는 true를 반환합니다. 일하는 것 같습니다. –

+1

그 정규식은 저에게 효과적입니다 :/ – Lloyd

+0

@ raina77ow 글쎄, 당신은 절대적으로 옳았습니다! 죄송 해요. 방금 일부 서버 측 캐싱이 스크립트 파일을 다시로드하지 않는다는 것을 알았습니다. 나는 그것을 100 번 시험했지만 효과를 나타내지는 않을 것이다. 이제 모든 것이 잘 작동하는 것 같습니다. 어쨌든, 당신의 권리 - 제 제공 된 코드는 완벽하게 작동합니다. – matt

답변

5

에서 봐주십시오하는

+0

@ raina77ow :'? :'에 대해서는별로 중요하지 않습니다. OP 코드를 모방 한 것뿐입니다. 그리고 당신의 테스트는 단순히 OP의 해결책보다 잘못되어 더 나쁜 것입니다. '/ [0-9] /'는 숫자가 있는지 확인하고'/^[0-9] /'는 문자열의 시작 부분에 숫자 나 공백이 있는지를 검사합니다. '+ '를 뒤에 붙이더라도 여전히 틀리다. – nhahtdh

+0

그러나 이것은 작동 할 것입니다! – matt

+0

@nhahtdh 당연히'/ [^ 0-9] /'였을 것입니다. 요점은 개발에서 하나의 복잡한 것보다 함께 작동하는 두 가지 간단한 것을 구축하고 유지하는 것이 더 쉽다는 것입니다. 정규 표현식은 예외가 아닙니다. – raina77ow

3

phone: function (val) { 
    return /^(\s*[0-9]+\s*)+$/.test(val); 
} 

적어도 하나 개의 번호가 있어야합니다 시도 (?=.*\d)은 입력에 숫자가 하나 이상 있다고 주장합니다. 그렇지 않으면 공백 만있는 입력이 일치 할 수 있습니다.

숫자 자릿수 제한이 없으며 입력에 공백이 표시되어야하는 위치에 제약이 없습니다.

+0

lol 이것은 선택적 공백을 허용하는 대신 존재할 공백을 넣습니다. 이것을 대신 사용하십시오 : return /^([0-9\s)+/.test(val); –

+0

@AndyLorenz 실제로 작동하지 않기 때문에 정규식을 확인하십시오 :) – Bruno

+0

잘 찾아 냈습니다 : return /^([0-9\s]+)$/.test(val); –

0

개인적으로 코드를 사용하고이 제대로 작동 : 함수 validateMobile (MOB) { VAR 재 =/^ 09 [0-9] {9} $/ 경우 (mob.match (재)) 참을 돌려라. else false를 반환합니다. }

+0

전화 번호 형식은 국가마다 다릅니다. 정규 표현식의 접두사 09는 이미 숫자 형식에 대한 가정을하고 있습니다. – nhahtdh