Uluslararası bir telefon numarasının kullanıcı girişini doğrulamam gerekiyor. E.164'e göre , maksimum uzunluk 15 basamaktır, ancak minimum hakkında herhangi bir bilgi bulamadım. Sadece rakamları düşünüyorum, artı işareti veya ayırıcı yok.
Uluslararası bir telefon numarasının kullanıcı girişini doğrulamam gerekiyor. E.164'e göre , maksimum uzunluk 15 basamaktır, ancak minimum hakkında herhangi bir bilgi bulamadım. Sadece rakamları düşünüyorum, artı işareti veya ayırıcı yok.
Yanıtlar:
Farklı kaynaklara göre, E-164 biçimindeki minimum uzunluğun ülkeden ülkeye bağlı olduğunu düşünüyorum. Örneğin:
İsveç için : Minimum sayı uzunluğu (ülke kodu hariç) 7 basamaktır. - Resmi Kaynak (ülke kodu 46)
Solomon Adaları için sabit hatlı telefonlar için 5. - Kaynak (ülke kodu 677)
... ve bunun gibi. Ülke kodu da dahil olmak üzere minimum uzunluk İsveç için 9, İsrail için 11 ve Solomon Adaları için 8 rakamdır.
Edit (Clean Solution) : Aslında, uzunluk vb.Gibi farklı kontroller yaparak uluslararası bir telefon numarasını doğrulamak yerine Google'ın libphonenumber kütüphanesini kullanabilirsiniz . Doğrudan E164 formatında bir telefon numarasını doğrulayabilir. Her şeyi dikkate alacaktır ve sayı geçerli E164 biçimindeyse ülkeye vermeniz bile gerekmez. Oldukça iyi! Bir örnek almak gerekirse:
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());
}
Numaraları doğruladığınız ülkeyi biliyorsanız, E164 formatına bile ihtiyacınız yoktur ve ülkeyi .parse
geçmek yerine işlevini belirtebilirsiniz null
.
getPhoneType
UAN dönmek gibi görünüyor. Yani bu 2222 numarası UAN. Ancak Evrensel Erişim Numaraları da daha uzun olabilir. Teknik olarak geçerli bir sayı gibi görünüyor. Böylece, telefon numarası türünü veya sizin için minimum uzunluğu kontrol edebilirsiniz.
EDIT 2015-06-27: Ülke kodu da dahil olmak üzere minimum sayı 8'dir. Benim hatam.
Orijinal yayın
Kullandığım minimum telefon numarası 10 basamaklı. Uluslararası kullanıcılar her zaman ülke kodlarını koymalıdır ve bildiğim kadarıyla ülke kodunu sayarsanız ondan az basamağa sahip ülke yoktur.
Daha fazla bilgi için: https://en.wikipedia.org/wiki/Telephone_numbering_plan
Minimum uzunluk Saint Helena (Format: +290 XXXX) ve Niue (Format: +683 XXXX) için 4'tür.