Tôi cần xác thực đầu vào của người dùng số điện thoại quốc tế. Theo E.164 , độ dài tối đa là 15 chữ số, nhưng tôi không thể tìm thấy bất kỳ thông tin nào về mức tối thiểu. Tôi chỉ xem xét các chữ số, không có dấu cộng hoặc dấu phân cách.
Tôi cần xác thực đầu vào của người dùng số điện thoại quốc tế. Theo E.164 , độ dài tối đa là 15 chữ số, nhưng tôi không thể tìm thấy bất kỳ thông tin nào về mức tối thiểu. Tôi chỉ xem xét các chữ số, không có dấu cộng hoặc dấu phân cách.
Câu trả lời:
Theo các nguồn khác nhau, tôi nghĩ độ dài tối thiểu ở định dạng E-164 phụ thuộc vào từng quốc gia. Ví dụ:
Đối với Thụy Điển : Độ dài số tối thiểu (không bao gồm mã quốc gia) là 7 chữ số. - Nguồn chính thức (mã quốc gia 46)
Đối với Quần đảo Solomon, 5 cho điện thoại cố định. - Nguồn (mã quốc gia 677)
... và như thế. Vì vậy, bao gồm mã quốc gia, độ dài tối thiểu là 9 chữ số cho Thụy Điển và 11 cho Israel và 8 cho Quần đảo Solomon.
Chỉnh sửa (Giải pháp sạch) : Trên thực tế, Thay vì xác thực số điện thoại quốc tế bằng cách kiểm tra khác nhau như độ dài, v.v., bạn có thể sử dụng thư viện libphonenumber của Google . Nó có thể xác nhận số điện thoại ở định dạng E164 trực tiếp. Nó sẽ tính đến mọi thứ và bạn thậm chí không cần phải cung cấp cho quốc gia nếu số đó ở định dạng E164 hợp lệ. Nó khá tốt! Lấy một ví dụ:
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());
}
Nếu bạn biết quốc gia mà bạn đang xác thực các số, bạn thậm chí không cần định dạng E164 và có thể chỉ định quốc gia trong .parse
chức năng thay vì chuyển null
.
getPhoneType
dường như trở về UAN. Vậy số 2222 này là UAN. Nhưng số truy cập phổ quát cũng có thể dài hơn. Về mặt kỹ thuật có vẻ là số hợp lệ. Vì vậy, bạn có thể kiểm tra loại số điện thoại hoặc độ dài tối thiểu ở phần của bạn.
EDIT 2015-06-27: Tối thiểu là 8, bao gồm cả mã quốc gia. Lỗi của tôi.
Bài gốc
Số điện thoại tối thiểu mà tôi sử dụng là 10 chữ số. Người dùng quốc tế phải luôn luôn đặt mã quốc gia của họ và theo như tôi biết, không có quốc gia nào có ít hơn mười chữ số nếu bạn đếm mã quốc gia.
Thêm thông tin ở đây: https://en.wikipedia.org/wiki/TelPhone_numbering_plan
Độ dài tối thiểu là 4 cho Saint Helena (Định dạng: +290 XXXX) và Niue (Định dạng: +683 XXXX).