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.
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.
Odpowiedzi:
Według różnych źródeł, myślę, że minimalna długość w formacie E-164 zależy od kraju. Na przykład:
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 .parse
funkcji zamiast przekazywania null
.
getPhoneType
wydaje 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.
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
Minimalna długość to 4 dla Świętej Heleny (format: +290 XXXX) i Niue (format: +683 XXXX).