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.
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.
Jawaban:
Sesuai sumber yang berbeda, saya pikir panjang minimum dalam format E-164 tergantung pada negara ke negara. Untuk misalnya:
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 .parse
fungsi alih-alih lewat null
.
getPhoneType
tampaknya 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.
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
Panjang minimum adalah 4 untuk Saint Helena (Format: +290 XXXX) dan Niue (Format: +683 XXXX).