ฉันขอแนะนำให้ดูที่ห้องสมุด Google " libphonenumber " ฉันรู้ว่ามันไม่ใช่ regex แต่ทำในสิ่งที่คุณต้องการ
ตัวอย่างเช่นจะรับรู้ว่า:
15555555555
เป็นตัวเลขที่เป็นไปได้ แต่ไม่ใช่ตัวเลขที่ถูกต้อง นอกจากนี้ยังสนับสนุนประเทศนอกสหรัฐอเมริกา
ไฮไลท์ของฟังก์ชั่น:
- แยก / จัดรูปแบบ / ตรวจสอบหมายเลขโทรศัพท์สำหรับทุกประเทศ / ภูมิภาคของโลก
getNumberType
- รับชนิดของตัวเลขตามตัวเลขนั้น สามารถแยกแยะโทรศัพท์พื้นฐาน, โทรศัพท์มือถือ, อัตราค่าโทร, ค่าใช้จ่ายร่วม, VoIP และหมายเลขส่วนตัว (ทุกครั้งที่ทำได้)
isNumberMatch
- รับระดับความเชื่อมั่นว่าตัวเลขทั้งสองอาจเหมือนกันหรือไม่
getExampleNumber
/getExampleNumberByType
- ให้หมายเลขตัวอย่างที่ถูกต้องสำหรับทุกประเทศ / ภูมิภาคโดยมีตัวเลือกในการระบุประเภทของหมายเลขโทรศัพท์ตัวอย่างที่จำเป็น
isPossibleNumber
- คาดเดาได้อย่างรวดเร็วว่าตัวเลขเป็นหมายเลขโทรศัพท์ที่เป็นไปได้หรือไม่โดยใช้ข้อมูลความยาวเท่านั้นเร็วกว่าการตรวจสอบความถูกต้องเต็มรูปแบบ
isValidNumber
- การยืนยันหมายเลขโทรศัพท์สำหรับภูมิภาคโดยใช้ข้อมูลความยาวและคำนำหน้า
AsYouTypeFormatter
- จัดรูปแบบหมายเลขโทรศัพท์แบบทันทีเมื่อผู้ใช้ป้อนตัวเลขแต่ละหลัก
findNumbers
- ค้นหาตัวเลขในการป้อนข้อความ
PhoneNumberOfflineGeocoder
- ให้ข้อมูลทางภูมิศาสตร์ที่เกี่ยวข้องกับหมายเลขโทรศัพท์
ตัวอย่าง
ปัญหาที่ใหญ่ที่สุดกับการตรวจสอบหมายเลขโทรศัพท์นั้นขึ้นอยู่กับวัฒนธรรมเป็นอย่างมาก
- สหรัฐอเมริกา
(408) 974–2042
หมายเลขสหรัฐที่ถูกต้องคือ
(999) 974–2042
คือไม่ได้เป็นที่ถูกต้องจำนวนบาท
- ออสเตรเลีย
0404 999 999
เป็นหมายเลขออสเตรเลียที่ถูกต้อง
(02) 9999 9999
เป็นหมายเลขออสเตรเลียที่ถูกต้อง
(09) 9999 9999
คือไม่ได้เป็นที่ถูกต้องจำนวนออสเตรเลีย
นิพจน์ทั่วไปนั้นใช้ได้สำหรับการตรวจสอบรูปแบบหมายเลขโทรศัพท์ แต่มันจะไม่สามารถตรวจสอบได้ ความถูกต้องได้ของหมายเลขโทรศัพท์ได้
ฉันขอแนะนำให้ข้ามการแสดงออกปกติอย่างง่าย ๆ เพื่อทดสอบหมายเลขโทรศัพท์ของคุณและใช้ห้องสมุดเช่น Google libphonenumber
(ลิงก์ไปยังโครงการ GitHub)GitHub)
แนะนำ libphonenumber!
ใช้หนึ่งในตัวอย่างที่ซับซ้อนมากขึ้นของ1-234-567-8901 x1234
คุณคุณจะได้รับข้อมูลต่อไปนี้libphonenumber
(ลิงก์ไปยังการสาธิตออนไลน์) :
Validation Results
Result from isPossibleNumber() true
Result from isValidNumber() true
Formatting Results:
E164 format +12345678901
Original format (234) 567-8901 ext. 123
National format (234) 567-8901 ext. 123
International format +1 234-567-8901 ext. 123
Out-of-country format from US 1 (234) 567-8901 ext. 123
Out-of-country format from CH 00 1 234-567-8901 ext. 123
ดังนั้นคุณไม่เพียง แต่เรียนรู้ว่าหมายเลขโทรศัพท์นั้นถูกต้องหรือไม่ แต่คุณยังได้รับการจัดรูปแบบหมายเลขโทรศัพท์ที่สอดคล้องกันในพื้นที่ของคุณ
โบนัสlibphonenumber
มีชุดข้อมูลจำนวนหนึ่งเพื่อตรวจสอบความถูกต้องของหมายเลขโทรศัพท์เช่นกันดังนั้นการตรวจสอบหมายเลขเช่น+61299999999
(รุ่นสากล(02) 9999 9999
) จะส่งกลับเป็นหมายเลขที่ถูกต้องพร้อมการจัดรูปแบบ:
Validation Results
Result from isPossibleNumber() true
Result from isValidNumber() true
Formatting Results
E164 format +61299999999
Original format 61 2 9999 9999
National format (02) 9999 9999
International format +61 2 9999 9999
Out-of-country format from US 011 61 2 9999 9999
Out-of-country format from CH 00 61 2 9999 9999
libphonenumber ให้ประโยชน์เพิ่มเติมมากมายกับคุณเช่นการจับตำแหน่งที่ตรวจพบหมายเลขโทรศัพท์และการรับข้อมูลโซนเวลาจากหมายเลขโทรศัพท์:
PhoneNumberOfflineGeocoder Results
Location Australia
PhoneNumberToTimeZonesMapper Results
Time zone(s) [Australia/Sydney]
แต่หมายเลขโทรศัพท์ของออสเตรเลียที่ไม่ถูกต้อง ( (09) 9999 9999
) ส่งคืนว่าไม่ใช่หมายเลขโทรศัพท์ที่ถูกต้อง
Validation Results
Result from isPossibleNumber() true
Result from isValidNumber() false
เวอร์ชันของ Google มีรหัสสำหรับ Java และ Javascript แต่ผู้คนยังใช้ห้องสมุดสำหรับภาษาอื่น ๆ ที่ใช้ชุดข้อมูลหมายเลขโทรศัพท์ของ Google i18n:
หากคุณไม่แน่ใจว่าคุณจะรับหมายเลขจากสถานที่หนึ่ง ๆ และพวกเขามักจะอยู่ในรูปแบบเดียวฉันขอแนะนำอย่างยิ่งว่าอย่าเขียนรหัสของคุณเองสำหรับเรื่องนี้และใช้ libphonenumber เพื่อตรวจสอบและแสดงหมายเลขโทรศัพท์