Độ dài tối thiểu của một số điện thoại quốc tế hợp lệ là gì?


147

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 hỏi hay. Bạn có thể tìm thấy một câu trả lời cho điều đó?
Shobhit Puri

1
liên kết hiển thị tối thiểu là 7
LoranceChen

Câu trả lời:


121

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 Israel : Độ dài số điện thoại tối thiểu (không bao gồm mã quốc gia) là 8 chữ số. - Nguồn chính thức (Mã quốc gia 972)
  • Đố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 .parsechức năng thay vì chuyển null.


OMG, nơi mà liên kết Google tuần trước! :-) Cảm ơn!
AMM

Yaa, tôi đã cập nhật nó gần đây. Xin lỗi về sự chậm trễ. Hy vọng nó giúp.
Shobhit Puri

@ShobhitPuri Tôi nghĩ rằng thư viện của Google cũng nói rằng "2222" là một số hợp lệ, vì vậy có lẽ nên có một độ dài tối thiểu để kiểm tra.
nhà phát triển Android

@androiddeveloper Tôi đã thử số trên của bạn trên libphonenumber.appspot.com. Nhưng nó nói nó không phải là một con số có thể. Với mã quốc gia nào bạn đã thử số đó? Ngoài ra có hai chức năng: một chức năng kiểm tra xem đó có phải là số có thể không và chức năng nào kiểm tra xem nó có hợp lệ không. Tôi không nghĩ rằng chúng ta nên kiểm tra độ dài.
Shobhit Puri 7/1/2015

Trên thực tế khi tôi thử điều đó với mã quốc gia Israel, nó cho thấy hợp lệ. Có lẽ bạn có thể kiểm tra các loại số . getPhoneTypedườ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.
Shobhit Puri

15

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


12
Quần đảo Solomon có thể có 8 bao gồm mã quốc gia ( en.wikipedia.org/wiki/TelPhone_numbers_in_the_Solomon_Islands )
Tom Heard

Cảm ơn @TomHeard - sửa đổi bài viết của tôi!
Jamon Holmgren

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.