Berapa panjang minimum nomor telepon internasional yang valid?

147

Saya perlu memvalidasi input pengguna dari nomor telepon internasional. Menurut E.164 , panjang maksimum adalah 15 digit, tetapi saya tidak dapat menemukan informasi tentang minimum. Saya menganggap hanya digit, tidak ada tanda plus atau pemisah.

SlimShaggy
sumber
Pertanyaan bagus. Apakah Anda dapat menemukan jawaban untuk itu?
Shobhit Puri
1
tautan menunjukkan minimum adalah 7
LoranceChen

Jawaban:

122

Sesuai sumber yang berbeda, saya pikir panjang minimum dalam format E-164 tergantung pada negara ke negara. Untuk misalnya:

  • Untuk Israel : Panjang nomor telepon minimum (tidak termasuk kode negara) adalah 8 digit. - Sumber Resmi (Kode Negara 972)
  • Untuk Swedia : Panjang nomor minimum (tidak termasuk kode negara) adalah 7 digit. - Sumber Resmi (kode negara 46)

  • Untuk Kepulauan Solomon 5 untuk telepon rumah. - Sumber (kode negara 677)

... dan seterusnya. Jadi termasuk kode negara, panjang minimum adalah 9 digit untuk Swedia dan 11 untuk Israel dan 8 untuk Kepulauan Solomon.

Sunting (Bersihkan Solusi) : Sebenarnya, Alih-alih memvalidasi nomor telepon internasional dengan melakukan pemeriksaan yang berbeda seperti panjang dll, Anda dapat menggunakan perpustakaan libphonenumber Google . Itu dapat memvalidasi nomor telepon dalam format E164 secara langsung. Ini akan mempertimbangkan semuanya dan Anda bahkan tidak perlu memberikan negara jika nomornya dalam format E164 yang valid. Itu cukup bagus! Mengambil contoh:

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());
}

Jika Anda tahu negara tempat Anda memvalidasi angka, Anda bahkan tidak perlu format E164 dan dapat menentukan negara dalam .parsefungsi alih-alih lewat null.

Puri Shobhit
sumber
OMG, di mana tautan Google itu minggu lalu! :-) Terima kasih!
AMM
Yaa, saya memperbaruinya baru-baru ini. Maaf atas keterlambatannya. Semoga ini bisa membantu.
Shobhit Puri
@ShobhitPuri Saya pikir perpustakaan Google juga mengatakan bahwa "2222" adalah angka yang valid, jadi mungkin harus ada panjang minimal untuk memeriksa.
pengembang android
@androiddeveloper Saya mencoba nomor Anda di atas di libphonenumber.appspot.com. Tapi katanya bukan angka yang mungkin. Dengan kode negara mana Anda mencoba nomor itu? Juga ada dua fungsi: satu yang memeriksa apakah itu nomor yang mungkin dan yang lain memeriksa apakah itu valid. Saya tidak berpikir kita perlu cek panjang.
Shobhit Puri
Sebenarnya ketika saya mencobanya dengan kode negara Israel, itu menunjukkan valid. Mungkin Anda dapat memeriksa jenis nomornya . getPhoneTypetampaknya mengembalikan UAN. Jadi nomor 2222 ini adalah UAN. Tetapi Nomor Akses Universal juga bisa lebih lama. Secara teknis itu tampaknya nomor yang valid. Jadi, Anda dapat memeriksa jenis nomor telepon atau panjang minimum di bagian Anda.
Shobhit Puri
15

EDIT 2015-06-27: Minimum sebenarnya 8, termasuk kode negara. Salahku.

Pos asli

Nomor telepon minimum yang saya gunakan adalah 10 digit. Pengguna internasional harus selalu meletakkan kode negara mereka, dan sejauh yang saya tahu tidak ada negara dengan kurang dari sepuluh digit jika Anda menghitung kode negara.

Info lebih lanjut di sini: https://en.wikipedia.org/wiki/Telephone_numbering_plan

Jamon Holmgren
sumber
12
Kepulauan Solomon dapat memiliki 8 termasuk kode negara ( en.wikipedia.org/wiki/Telephone_numbers_in_the_Solomon_Islands )
Tom Heard
Terima kasih @ TomHeard - merevisi pos saya!
Jamon Holmgren