ฉันต้องตรวจสอบความถูกต้องของข้อมูลหมายเลขโทรศัพท์ระหว่างประเทศของผู้ใช้ ตามที่ระบุในE.164ความยาวสูงสุดคือ 15 หลัก แต่ฉันไม่สามารถค้นหาข้อมูลใด ๆ เกี่ยวกับขั้นต่ำได้ ฉันพิจารณาตัวเลขเท่านั้นไม่มีเครื่องหมายบวกหรือตัวคั่น
ฉันต้องตรวจสอบความถูกต้องของข้อมูลหมายเลขโทรศัพท์ระหว่างประเทศของผู้ใช้ ตามที่ระบุในE.164ความยาวสูงสุดคือ 15 หลัก แต่ฉันไม่สามารถค้นหาข้อมูลใด ๆ เกี่ยวกับขั้นต่ำได้ ฉันพิจารณาตัวเลขเท่านั้นไม่มีเครื่องหมายบวกหรือตัวคั่น
คำตอบ:
จากแหล่งข้อมูลที่แตกต่างกันฉันคิดว่าความยาวขั้นต่ำในรูปแบบ E-164 ขึ้นอยู่กับแต่ละประเทศ สำหรับเช่น:
สำหรับสวีเดน : ความยาวขั้นต่ำ (ไม่รวมรหัสประเทศ) คือ 7 หลัก - แหล่งข้อมูลอย่างเป็นทางการ (รหัสประเทศ 46)
สำหรับหมู่เกาะโซโลมอนมัน 5 สำหรับโทรศัพท์พื้นฐาน - ที่มา (รหัสประเทศ 677)
... และต่อไป ดังนั้นรวมถึงรหัสประเทศความยาวต่ำสุดคือ 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 และสามารถระบุประเทศในฟังก์ชั่นแทนการส่งผ่าน.parse
null
getPhoneType
ดูเหมือนว่าจะส่งคืน UAN 2222 นี่ก็คือ UAN แต่หมายเลขการเข้าใช้สากลอาจยาวกว่านี้ได้เช่นกัน ในทางเทคนิคดูเหมือนว่าจะเป็นหมายเลขที่ถูกต้อง ดังนั้นคุณสามารถตรวจสอบประเภทหมายเลขโทรศัพท์หรือความยาวขั้นต่ำในส่วนของคุณ
แก้ไข 2015-06-27: ขั้นต่ำจริง 8 รวมถึงรหัสประเทศ ความผิดฉันเอง.
โพสต์ต้นฉบับ
หมายเลขโทรศัพท์ขั้นต่ำที่ฉันใช้คือ 10 หลัก ผู้ใช้ต่างประเทศควรใส่รหัสประเทศเสมอและเท่าที่ฉันรู้ว่าไม่มีประเทศใดที่มีตัวเลขน้อยกว่าสิบหลักถ้าคุณนับรหัสประเทศ
ข้อมูลเพิ่มเติมที่นี่: https://en.wikipedia.org/wiki/Telephone_numbering_plan
ความยาวต่ำสุดคือ 4 สำหรับ Saint Helena (รูปแบบ: +290 XXXX) และ Niue (รูปแบบ: +683 XXXX)