Jaka jest minimalna długość ważnego międzynarodowego numeru telefonu?


147

Muszę zweryfikować dane wejściowe użytkownika dotyczące międzynarodowego numeru telefonu. Według E.164 maksymalna długość to 15 cyfr, ale nie udało mi się znaleźć żadnych informacji o minimum. Rozważam tylko cyfry, bez znaku plus ani separatorów.


Dobre pytanie. Czy byłeś w stanie znaleźć odpowiedź na to pytanie?
Shobhit Puri

1
link pokazuje, że minimum to 7
LoranceChen

Odpowiedzi:


122

Według różnych źródeł, myślę, że minimalna długość w formacie E-164 zależy od kraju. Na przykład:

  • Dla Izraela : minimalna długość numeru telefonu (bez kodu kraju) to 8 cyfr. - Oficjalne źródło (kod kraju 972)
  • Dla Szwecji : minimalna długość numeru (bez kodu kraju) to 7 cyfr. - Oficjalne źródło (kod kraju 46)

  • Na Wyspach Salomona jest to 5 dla telefonów stacjonarnych. - Źródło (kod kraju 677)

... i tak dalej. Tak więc, uwzględniając kod kraju, minimalna długość to 9 cyfr dla Szwecji, 11 dla Izraela i 8 dla Wysp Salomona.

Edytuj (czyste rozwiązanie) : Właściwie, zamiast sprawdzać międzynarodowy numer telefonu za pomocą różnych kontroli, takich jak długość itp., Możesz użyć biblioteki libphonenumber firmy Google . Może bezpośrednio zweryfikować numer telefonu w formacie E164. Weźmie pod uwagę wszystko i nie musisz nawet podawać kraju, jeśli numer jest w ważnym formacie E164. To całkiem niezłe! Biorąc przykład:

String phoneNumberE164Format = "+14167129018"
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
try {
    PhoneNumber phoneNumberProto = phoneUtil.parse(phoneNumberE164Format, null);
    boolean isValid = phoneUtil.isValidNumber(phoneNumberProto); // returns true if valid
    if (isValid) {
        // Actions to perform if the number is valid
    } else {
        // Do necessary actions if its not valid 
    }
} catch (NumberParseException e) {
    System.err.println("NumberParseException was thrown: " + e.toString());
}

Jeśli znasz kraj, dla którego sprawdzasz numery, nie potrzebujesz nawet formatu E164 i możesz określić kraj w .parsefunkcji zamiast przekazywania null.


OMG, gdzie był ten link do Google kilka tygodni temu! :-) Dzięki!
AMM

Tak, ostatnio go zaktualizowałem. Przepraszam za opóźnienie. Mam nadzieję, że to pomoże.
Shobhit Puri

@ShobhitPuri Myślę, że biblioteka Google również mówi, że „2222” to poprawna liczba, więc może powinna być minimalna długość do sprawdzenia.
programista Androida

@androiddeveloper Wypróbowałem twój powyższy numer na libphonenumber.appspot.com. Ale powiedział, że to nie jest możliwa liczba. Z jakim kodem kraju wypróbowałeś ten numer? Istnieją również dwie funkcje: jedna, która sprawdza, czy jest to możliwy numer, a druga, która sprawdza, czy jest poprawna. Myślę, że nie powinniśmy potrzebować sprawdzenia długości.
Shobhit Puri

Właściwie, kiedy spróbuję tego z kodem kraju Izraela, pokazuje, że jest ważny. Może możesz sprawdzić typy liczb . getPhoneTypewydaje się zwracać UAN. Więc ten numer 2222 to UAN. Ale numery uniwersalnego dostępu mogą być również dłuższe. Technicznie wydaje się, że jest to poprawna liczba. Możesz więc sprawdzić typ numeru telefonu lub minimalną długość ze swojej strony.
Shobhit Puri

15

EDYCJA 2015-06-27: Minimum to w rzeczywistości 8, w tym kod kraju. Mój błąd.

Oryginalny post

Minimalny numer telefonu, którego używam, to 10 cyfr. Użytkownicy międzynarodowi powinni zawsze podawać swój kod kraju i, o ile wiem, nie ma krajów z mniej niż dziesięcioma cyframi, jeśli liczysz kod kraju.

Więcej informacji tutaj: https://en.wikipedia.org/wiki/Telephone_numbering_plan


12
Wyspy Salomona mogą mieć 8, w tym kod kraju ( en.wikipedia.org/wiki/Telephone_numbers_in_the_Solomon_Islands )
Tom Heard

Dzięki @TomHeard - poprawiłem mój post!
Jamon Holmgren

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.