2010-06-26 5 views
5

사용자가 입력 한 전화 번호에 국가 코드가 포함되어 있는지 확인하고 번호가 올바른지 확인하는 쉬운 방법이 있습니까? 특정 형식을 사용하지 않고 숫자 자체는 숫자, 아니요 ('s, -'등) 여야합니다. 사용자에게 국가를 묻지 않고 그러한 유효성 검사가 가능합니까? 트릭은 모든 사람들과 함께 작업하고 싶습니다. 숫자는 전 세계적으로.사용자가 입력 한 전화 번호에 국가 코드가 포함되어 있는지 확인하는 방법은 무엇입니까?

나는 그것 (하지만이 문제에 대한 많은 물건을 좀 봤 발견) 정규식으로 할 수없는 것 같아요. 그것을 위해 어떤 라이브러리가 있나요? 내가 사용 파이썬.

또는 X-YYYYYYYY와 같은 형식을 적용하는 것이 더 합리적 일 수 있습니다. X는 국가 코드 또는 이와 비슷한 형식 일 것입니다.

+1

스택 오버플로에 오신 것을 환영합니다! 전화 번호는 악몽입니다. –

답변

1

나는 잠시 동안이 주제를 연구했습니다. 숫자가 있으면 누구도 회문 코드를 가지고 있는지 알 수 없습니다. : 그것을 발견하는 것은 불가능합니다. 우리는 국가 번호가없는 유효한 미국 번호 (1)와 지역 번호가있는 다른 일부 국가의 유효한 번호를 받았습니다. 하지만 99 %의 경우 숫자의 길이가 9인지 확인할 수 있습니다. 그러면 협의 코드가 없습니다. 사용자는 사용자에게 인증 코드를 입력해야합니다.

4

여기에 Google's library for dealing with phone numbers (Java로 표시)입니다. 그러나 Google은 Python 상점이기도하기 때문에 어딘가에서 Python 버전을 사용할 수 있다고 생각하거나 필요로하는 것을 추출하여 번역 할 수 있습니다.

+0

작동하지 않습니다. 나는 플러스가없는 휴대 전화 번호를 입력하고 기본값으로 미국을 설정했습니다. 그것을 파싱 할 수 없었습니다. 그래서 그것은 쓸모가 없다. 내 답변에서 나는 어떤 가정이 만들어 질 수없는 경우를 주었다. – Andrey

+0

귀하의 전화 번호를 모른 채 귀하의 상황에서 그 효과에 대해 말할 수는 없지만 미국이나 다른 미국의 대표 번호없이 광산 또는 다른 10 자리 숫자를 입력하면 올바르게 해석됩니다. 나는 그 차이가 무엇인지 모릅니다. – Andy

+0

화려한 라이브러리! 공유해 주셔서 감사합니다. 다음은 repo의 새 위치입니다. https://github.com/googlei18n/libphonenumber – coder9

2

247 8000 같은 숫자가 될 수있다 :

  • 지정되지 않은 국가에서 지정되지 않은 지역에서 지역 번호 247 8000, 어쩌면 +1 212 247 8000
  • 247 지역 번호에서 지역 번호 8000 지정되지 않은 나라에서, 어쩌면 269 247 8000
  • 247 국가 번호에 지역 번호 8000, 더 문맥없이 8000

247로는 말할 수 없다.

+ 기호는 국가 코드 부분을 식별하는 데 중요합니다.

관련 문제