ความยาวต่ำสุดของหมายเลขโทรศัพท์ระหว่างประเทศที่ถูกต้องคืออะไร


147

ฉันต้องตรวจสอบความถูกต้องของข้อมูลหมายเลขโทรศัพท์ระหว่างประเทศของผู้ใช้ ตามที่ระบุในE.164ความยาวสูงสุดคือ 15 หลัก แต่ฉันไม่สามารถค้นหาข้อมูลใด ๆ เกี่ยวกับขั้นต่ำได้ ฉันพิจารณาตัวเลขเท่านั้นไม่มีเครื่องหมายบวกหรือตัวคั่น


คำถามที่ดี. คุณสามารถหาคำตอบได้ไหม?
Shobhit Puri

1
ลิงก์แสดงค่าต่ำสุดคือ 7
LoranceChen

คำตอบ:


122

จากแหล่งข้อมูลที่แตกต่างกันฉันคิดว่าความยาวขั้นต่ำในรูปแบบ E-164 ขึ้นอยู่กับแต่ละประเทศ สำหรับเช่น:

... และต่อไป ดังนั้นรวมถึงรหัสประเทศความยาวต่ำสุดคือ 9 หลักสำหรับสวีเดนและ 11 สำหรับอิสราเอลและ 8 สำหรับหมู่เกาะโซโลมอน

แก้ไข (Clean โซลูชั่น) : ที่จริงแทนการตรวจสอบหมายเลขโทรศัพท์ระหว่างประเทศโดยมีการตรวจสอบแตกต่างกันเช่นความยาว ฯลฯ คุณสามารถใช้ของ Google libphonenumberห้องสมุด สามารถตรวจสอบหมายเลขโทรศัพท์ในรูปแบบ E164 โดยตรง จะต้องคำนึงถึงทุกอย่างและคุณไม่จำเป็นต้องแจ้งประเทศถ้าจำนวนนั้นอยู่ในรูปแบบ E164 ที่ถูกต้อง มันค่อนข้างดี! ยกตัวอย่าง:

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

ถ้าคุณรู้ว่าประเทศที่คุณกำลังตรวจสอบตัวเลขที่คุณ don; T จำเป็นต้องมีรูปแบบ E164 และสามารถระบุประเทศในฟังก์ชั่นแทนการส่งผ่าน.parsenull


OMG ลิงก์ของ Google มาจากที่ไหนเมื่อหลายสัปดาห์ก่อน! :-) ขอบคุณ!
AMM

Yaa ฉันเพิ่งปรับปรุงมันเมื่อไม่นานมานี้ ขออภัยในความล่าช้า. หวังว่ามันจะช่วย
Shobhit Puri

@ShobhitPuri ฉันคิดว่าห้องสมุดของ Google บอกว่า "2222" เป็นหมายเลขที่ถูกต้องดังนั้นอาจมีความยาวน้อยที่สุดในการตรวจสอบ
นักพัฒนา Android

@androiddeveloper ฉันลองหมายเลขข้างต้นของคุณบน libphonenumber.appspot.com แต่มันบอกว่ามันไม่ได้เป็นไปได้ คุณลองใช้รหัสประเทศไหน นอกจากนี้ยังมีฟังก์ชั่นสองอย่าง: ฟังก์ชันหนึ่งตรวจสอบว่าเป็นไปได้หรือไม่และฟังก์ชันอื่นตรวจสอบว่าใช้ได้หรือไม่ ฉันไม่คิดว่าเราควรตรวจสอบความยาว
Shobhit Puri

ที่จริงแล้วเมื่อฉันลองใช้รหัสประเทศของอิสราเอลมันก็แสดงว่าใช้ได้ บางทีคุณอาจจะสามารถตรวจสอบประเภทจำนวน getPhoneTypeดูเหมือนว่าจะส่งคืน UAN 2222 นี่ก็คือ UAN แต่หมายเลขการเข้าใช้สากลอาจยาวกว่านี้ได้เช่นกัน ในทางเทคนิคดูเหมือนว่าจะเป็นหมายเลขที่ถูกต้อง ดังนั้นคุณสามารถตรวจสอบประเภทหมายเลขโทรศัพท์หรือความยาวขั้นต่ำในส่วนของคุณ
Shobhit Puri

15

แก้ไข 2015-06-27: ขั้นต่ำจริง 8 รวมถึงรหัสประเทศ ความผิดฉันเอง.

โพสต์ต้นฉบับ

หมายเลขโทรศัพท์ขั้นต่ำที่ฉันใช้คือ 10 หลัก ผู้ใช้ต่างประเทศควรใส่รหัสประเทศเสมอและเท่าที่ฉันรู้ว่าไม่มีประเทศใดที่มีตัวเลขน้อยกว่าสิบหลักถ้าคุณนับรหัสประเทศ

ข้อมูลเพิ่มเติมที่นี่: https://en.wikipedia.org/wiki/Telephone_numbering_plan


12
หมู่เกาะโซโลมอนสามารถมี 8 รวมถึงรหัสประเทศ ( en.wikipedia.org/wiki/Telephone_numbers_in_the_Solomon_Islands )
Tom Heard

ขอบคุณ @TomHeard - แก้ไขโพสต์ของฉัน!
Jamon Holmgren

10

ความยาวต่ำสุดคือ 4 สำหรับ Saint Helena (รูปแบบ: +290 XXXX) และ Niue (รูปแบบ: +683 XXXX)


3
เซนต์เฮเลน่าเปลี่ยนเป็น 5 หลัก (ไม่รวมรหัสประเทศ) - en.wikipedia.org/wiki/…
Cheok Yan Cheng

4
ตามen.wikipedia.org/wiki/Telephone_numbers_in_Niueนีอูเอมีเพียง 7 หลักรวมถึงรหัสประเทศ
lreeder
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.