เครื่องมือสร้างและตรวจสอบหมายเลขโทรศัพท์ - ทดสอบหมายเลขสำหรับทุกประเทศ
สร้างหมายเลขโทรศัพท์ทดสอบที่ถูกต้องสำหรับสหรัฐอเมริกา สหราชอาณาจักร เม็กซิโก และอินเดีย สร้างหมายเลขโทรศัพท์มือถือหรือโทรศัพท์บ้านด้วยการจัดรูปแบบที่ถูกต้อง เครื่องมือฟรีสำหรับนักพัฒนาที่ทดสอบตรรกะการตรวจสอบ
เครื่องมือสร้างและตรวจสอบหมายเลขโทรศัพท์
เอกสารประกอบการใช้งาน
ทำไมการสร้างหมายเลขโทรศัพท์จึงสำคัญ
การทดสอบตรรกะการตรวจสอบหมายเลขโทรศัพท์สามารถทำให้เกิดความคับข้องใจได้ คุณต้องการหมายเลขที่สมจริงซึ่งเป็นไปตามรูปแบบเฉพาะของแต่ละประเทศ แต่การสร้างข้อมูลทดสอบด้วยตนเองนั้นน่าเบื่อและมีโอกาสเกิดข้อผิดพลาดสูง เครื่องมือนี้แก้ปัญหาดังกล่าวโดยการสร้างหมายเลขโทรศัพท์ที่ถูกโครงสร้างสำหรับหลายประเทศ—พร้อมรหัสพื้นที่ คำนำหน้าโทรศัพท์มือถือ และการจัดรูปแบบที่ถูกต้อง
ไม่ว่าคุณกำลังสร้างแบบฟอร์มติดต่อ ทดสอบ SMS API หรือเติมข้อมูลในฐานข้อมูลการพัฒนา คุณจะได้หมายเลขที่ตรงกับรูปแบบในโลกแห่งความเป็นจริง เครื่องมือนี้จัดการความซับซ้อนของมาตรฐานระหว่างประเทศ (เช่น E.164) ในขณะที่ยังคงอินเทอร์เฟซให้เรียบง่าย: เลือกประเทศ เลือกโทรศัพท์มือถือหรือโทรศัพท์บ้าน และสร้าง
สิ่งที่ทำให้เครื่องมือนี้แตกต่างจากตัวสุ่มหลักเลขอื่นๆ คือการเคารพกฎเกณฑ์ หมายเลขโทรศัพท์มือถือของเม็กซิโกจะมีรหัสพื้นที่ที่ถูกต้อง (55 สำหรับเม็กซิโกซิตี้ 33 สำหรับกวาดาลาฮารา) หมายเลขของสหรัฐอเมริกาจะหลีกเลี่ยงรูปแบบที่ไม่ถูกต้อง เช่น รหัสพื้นที่เริ่มต้นด้วย 0 หรือ 1 หมายเลขโทรศัพท์มือถือของสหราชอาณาจักรเริ่มต้นด้วย 7 รายละเอียดเหล่านี้สำคัญเมื่อคุณกำลังทดสอบตรรกะการตรวจสอบที่ผู้ใช้จะพบในการใช้งานจริง
วิธีการทำงานของเครื่องมือสร้างหมายเลขโทรศัพท์
เบื้องหลังอินเทอร์เฟซที่เรียบง่าย เครื่องมือนี้ใช้กฎเฉพาะของแต่ละประเทศในการสร้างหมายเลขโทรศัพท์ที่ถูกต้อง:
-
การเลือกประเทศและภูมิภาค: เลือกประเทศและภูมิภาคเป้าหมาย ซึ่งจะกำหนดรหัสพื้นที่ ตัวอย่างเช่น การเลือก "CDMX" ในประเทศเม็กซิโกจะใช้รหัสพื้นที่ 55 โดยอัตโนมัติ
-
ตรรกะประเภทหมายเลข: หมายเลขโทรศัพท์มือถือและโทรศัพท์พื้นฐานมีรูปแบบที่แตกต่างกัน ในสหราชอาณาจักร หมายเลขมือถือจะเริ่มต้นด้วย 7 ในขณะที่โทรศัพท์พื้นฐานใช้รหัสทางภูมิศาสตร์เช่น 20 สำหรับลอนดอน เครื่องมือจะใช้คำนำหน้าที่ถูกต้องตามการเลือกของคุณ
-
การสร้างหลักเลขสุ่ม: สำหรับหมายเลขผู้สมัคร เครื่องมือจะสร้างหลักเลขสุ่มภายในช่วงที่ถูกต้อง ไม่ใช่ทุกหลักเลขที่ใช้ได้ทุกที่ - รหัสพื้นที่ของสหรัฐอเมริกาไม่สามารถเริ่มต้นด้วย 0 หรือ 1 และบางรหัสถูกสงวนไว้สำหรับบริการ
-
การใช้รูปแบบ: หมายเลขจะถูกจัดรูปแบบตามมาตรฐาน E.164 (ระหว่างประเทศ) หรือธรรมเนียมท้องถิ่น หมายเลขของเม็กซิโกจะปรากฏเป็น "+52 55 1234 5678" ในระดับนานาชาติ หรือ "55 1234 5678" ในท้องถิ่น
-
การตรวจสอบความถูกต้อง: หมายเลขที่สร้างขึ้นแต่ละหมายเลขจะถูกตรวจสอบกับรูปแบบ regex เฉพาะของประเทศนั้น ซึ่งจะจับข้อผิดพลาดทางโครงสร้างก่อนแสดงหมายเลข
สิ่งที่คุณจะไม่เห็น: เครื่องมือนี้จงใจหลีกเลี่ยงหมายเลขฉุกเฉิน (เช่น 911) ช่วงการทดสอบ และรหัสบริการพิเศษ ซึ่งทำให้ผลลัพธ์ปลอดภัยสำหรับสภาพแวดล้อมการทดสอบที่คุณไม่ต้องการกระตุ้นบริการจริงโดยไม่ตั้งใจ
สูตรและอัลกอริทึม
การสร้างหมายเลขโทรศัพท์อาจดูเหมือนเป็นกระบวนการสุ่มอย่างง่าย แต่การนำไปใช้อย่างถูกต้องต้องเข้าใจข้อจำกัดทางคณิตศาสตร์และรูปแบบที่ทำให้หมายเลขโทรศัพท์ถูกต้องในแต่ละภูมิภาค
อัลกอริทึมการสร้างตัวเลขสุ่ม
อัลกอริทึมพื้นฐานสำหรับการสร้างหมายเลขโทรศัพท์ที่ถูกต้องเป็นไปตามสูตรนี้:
โดยที่:
- คือหมายเลขโทรศัพท์ทั้งหมด
- คือรหัสประเทศ (เป็นทางเลือกสำหรับรูปแบบในประเทศ)
- คือรหัสพื้นที่/ภูมิภาค
- คือคำนำหน้า (ซึ่งอาจมีข้อจำกัดขึ้นอยู่กับประเภทของหมายเลข)
- คือหมายเลขผู้สมัคร (หลักสุ่ม)
อัลกอริทึมการตรวจสอบ
การตรวจสอบหมายเลขโทรศัพท์สามารถแสดงเป็นการจับคู่รูปแบบนิพจน์ปกติ ซึ่งสามารถแสดงทางคณิตศาสตร์ได้ดังนี้:
1 & \text{ถ้า } N \text{ ตรงกับ } R_c \\ 0 & \text{อื่นๆ} \end{cases}$$ โดยที่: - $V(N)$ คือผลลัพธ์การตรวจสอบ (1 สำหรับถูกต้อง, 0 สำหรับไม่ถูกต้อง) - $N$ คือหมายเลขโทรศัพท์ที่กำลังตรวจสอบ - $R_c$ คือรูปแบบนิพจน์ปกติสำหรับประเทศ $c$ ### ความน่าจะเป็นและการกระจาย เมื่อสร้างหมายเลขโทรศัพท์สุ่ม เราต้องพิจารณาช่วงของหลักที่ถูกต้องสำหรับแต่ละตำแหน่ง ตัวอย่างเช่น ในสหรัฐอเมริกา รหัสพื้นที่ไม่สามารถเริ่มต้นด้วย 0 หรือ 1 และไม่สามารถเป็นรหัสบริการเช่น 911 จำนวนของหมายเลขโทรศัพท์ที่เป็นไปได้สำหรับประเทศหนึ่งสามารถคำนวณได้ดังนี้: $$P_c = \prod_{i=1}^{n} d_i$$ โดยที่: - $P_c$ คือจำนวนรวมของหมายเลขโทรศัพท์ที่เป็นไปได้สำหรับประเทศ $c$ - $n$ คือจำนวนตำแหน่งในหมายเลขโทรศัพท์ (ไม่รวมรหัสประเทศ) - $d_i$ คือจำนวนหลักที่ถูกต้องสำหรับตำแหน่ง $i$ ตัวอย่างเช่น สำหรับหมายเลขโทรศัพท์ของสหรัฐอเมริกา (ไม่รวมรหัสประเทศ): - หลักแรกของรหัสพื้นที่: 8 ความเป็นไปได้ (2-9) - หลักที่สองและสามของรหัสพื้นที่: 10 ความเป็นไปได้แต่ละหลัก (0-9) - หลักผู้สมัคร 7 หลัก: 10 ความเป็นไปได้แต่ละหลัก (0-9) $$P_{US} = 8 \times 10 \times 10 \times 10 \times 10 \times 10 \times 10 \times 10 \times 10 \times 10 = 8 \times 10^9 = 8,000,000,000$$ ซึ่งหมายความว่ามีหมายเลขโทรศัพท์ที่เป็นไปได้ 8 พันล้านหมายเลข แม้ว่าหลายหมายเลขจะถูกสงวนหรือไม่ได้ใช้งาน ## คุณสมบัติหลัก ### การรองรับหลายประเทศด้วยความแม่นยำระดับภูมิภาค สร้างหมายเลขโทรศัพท์สำหรับตลาดหลัก 4 แห่ง: - **เม็กซิโก (+52)**: รหัสภูมิภาคสำหรับ CDMX (55), กวาดาลาฮาร่า (33), มอนเทอร์เรย์ (81), คันคูน (998) และอื่นๆ - **สหรัฐอเมริกา (+1)**: รูปแบบ 10 หลักมาตรฐานพร้อมรหัสพื้นที่ที่ถูกต้อง - **สหราชอาณาจักร (+44)**: รหัสภูมิศาสตร์สำหรับลอนดอน (20), แมนเชสเตอร์ (161) และมือถือ (7xxx) - **อินเดีย (+91)**: หมายเลขมือถือ 10 หลักพร้อมคำนำหน้าผู้ให้บริการที่ถูกต้อง (6/7/8/9) แต่ละภูมิภาคใช้รหัสพื้นที่ที่แท้จริง เมื่อคุณเลือก "เม็กซิโกซิตี้" คุณจะได้ 55 เป็นรหัสพื้นที่ - เหมือนกับรหัสที่ใช้ในหมายเลขของเม็กซิโกจริง ความแม่นยำนี้มีความสำคัญเมื่อทดสอบแอปพลิเคชันที่แยกวิเคราะห์หรือตรวจสอบหมายเลข ### การสลับระหว่างรูปแบบสากลและท้องถิ่น สลับระหว่างสองรูปแบบมาตรฐาน: - **สากล (E.164)**: +52 55 1234 5678 - ใช้สำหรับ API, ฐานข้อมูล และระบบทั่วโลก - **ท้องถิ่น**: 55 1234 5678 - วิธีที่ผู้ใช้เห็นหมายเลขในประเทศของตน **เหตุผลที่สำคัญ**: แอปพลิเคชันของคุณอาจได้รับหมายเลขในรูปแบบใดก็ได้ ผู้ใช้ในเม็กซิโกพิมพ์รูปแบบท้องถิ่น แต่ผู้ใช้ต่างประเทศจะรวมรหัสประเทศ การทดสอบทั้งสองรูปแบบช่วยให้มั่นใจว่าการตรวจสอบของคุณจัดการอินพุตในโลกแห่งความเป็นจริง ### การแยกแยะระหว่างมือถือและโทรศัพท์บ้าน สร้างหมายเลขมือถือหรือโทรศัพท์บ้านพร้อมคำนำหน้าที่เหมาะสม: - **มือถือ**: หมายเลขสหราชอาณาจักรเริ่มต้นด้วย 7 ตามข้อกำหนดของ Ofcom - **โทรศัพท์บ้าน**: รหัสภูมิศาสตร์ที่เชื่อมโยงกับเมืองเฉพาะ (20 ของลอนดอน, 11 ของเดลี) ความแตกต่างนี้มีความสำคัญทางเทคนิค ไม่ใช่เพียงแค่การตกแต่ง หมายเลขมือถือและโทรศัพท์บ้านปฏิบัติตามแผนการกำหนดหมายเลขที่แตกต่างกันภายในประเทศเดียวกัน ตรรกะการตรวจสอบของคุณจำเป็นต้องรู้จักทั้งสองแบบ ### คัดลอกด้วยการคลิกเดียว คลิกปุ่มคัดลอกเพื่อเพิ่มหมายเลขที่สร้างขึ้นลงในคลิปบอร์ดของคุณทันที ไม่ต้องเลือกหรือไฮไลท์ด้วยตนเอง - เพียงคลิกและวางลงในสคริปต์ทดสอบ การแทรก SQL หรือช่องกรอกแบบฟอร์มของคุณ ## มาตรฐานรูปแบบหมายเลขโทรศัพท์ ### ทำความเข้าใจ E.164: มาตรฐานสากล มาตรฐาน [E.164](https://www.itu.int/rec/T-REC-E.164/en) ซึ่งดูแลโดยสหภาพโทรคมนาคมระหว่างประเทศ กำหนดวิธีการทำงานของหมายเลขโทรศัพท์ทั่วโลก ก่อตั้งขึ้นในปี 1984 และยังคงใช้งานอยู่จนถึงปัจจุบัน โดยกำหนดกฎเกณฑ์พื้นฐาน: - **สูงสุด 15 หลัก** ทั้งหมด (รวมรหัสประเทศ) - **คำนำหน้าเครื่องหมายบวก** (+) สำหรับรูปแบบระหว่างประเทศ - **ไม่มีอักขระพิเศษ** ในหมายเลขจริง (ช่องว่างและเครื่องหมายยัติภังค์ใช้เพื่อการแสดงผลเท่านั้น) โครงสร้างรูปแบบ: +[รหัสประเทศ] [หมายเลขภายในประเทศ] เหตุผลที่สำคัญสำหรับนักพัฒนา: เมื่อจัดเก็บหมายเลขโทรศัพท์ในฐานข้อมูล ให้ใช้รูปแบบ E.164 เป็นหลัก มันชัดเจน สามารถแยกวิเคราะห์ได้ และใช้งานร่วมกับ API โทรคมนาคมใดๆ หมายเลขเช่น "+15551234567" เป็นที่เข้าใจทั่วโลก ในขณะที่ "(555) 123-4567" ต้องอาศัยบริบทเพื่อทราบว่าเป็นหมายเลขของสหรัฐอเมริกา [SVG diagram remains the same as in the original document] ### รูปแบบเฉพาะของประเทศ #### เม็กซิโก (+52) ระบบหมายเลขโทรศัพท์ของเม็กซิโกเป็นไปตามรูปแบบเหล่านี้: - **หมายเลขโทรศัพท์มือถือ**: 10 หลักทั้งหมด - รูปแบบ: +52 XX XXXX XXXX - ตัวอย่าง: +52 55 1234 5678 - หมายเลขโทรศัพท์มือถือในเม็กซิโกมักขึ้นต้นด้วยรหัสพื้นที่เช่น 55 (เม็กซิโกซิตี้), 33 (กวาดาลาฮารา), 81 (มอนเทอร์เรย์) - **หมายเลขโทรศัพท์บ้าน**: 8 หลัก (พร้อมรหัสพื้นที่ 2 หลัก) - รูปแบบ: +52 XX XXXX XXXX - ตัวอย่าง: +52 55 5123 4567 #### สหรัฐอเมริกา (+1) - **โทรศัพท์มือถือและโทรศัพท์บ้าน**: 10 หลักทั้งหมด - รูปแบบ: +1 XXX XXX XXXX - รหัสพื้นที่ (3 หลักแรก) แตกต่างกันไปตามภูมิภาค - หมายเลขโทรศัพท์มือถือและโทรศัพท์บ้านใช้รูปแบบเดียวกัน แต่มีคำนำหน้าที่แตกต่างกัน #### สหราชอาณาจักร (+44) - **หมายเลขโทรศัพท์มือถือ**: มักขึ้นต้นด้วย '7' - รูปแบบ: +44 7XXX XXXXXX - ตัวอย่าง: +44 7700 123456 - **หมายเลขโทรศัพท์บ้าน**: แตกต่างกันไปตามภูมิภาค - รูปแบบ: +44 XX XXXX XXXX หรือ +44 XXX XXX XXXX - ตัวอย่าง: +44 20 1234 5678 (ลอนดอน) #### อินเดีย (+91) - **หมายเลขโทรศัพท์มือถือ**: 10 หลัก มักขึ้นต้นด้วย 6, 7, 8, หรือ 9 - รูปแบบ: +91 XXXXX XXXXX - ตัวอย่าง: +91 98765 43210 - **หมายเลขโทรศัพท์บ้าน**: แตกต่างกันไปตามภูมิภาค โดยปกติ 8 หลักพร้อมรหัส STD - รูปแบบ: +91 XX XXXX XXXX - ตัวอย่าง: +91 11 2345 6789 (เดลี) ## คู่มือเริ่มต้นอย่างรวดเร็ว: สร้างหมายเลขทดสอบแรกของคุณ ### การสร้างขั้นพื้นฐาน (ภายใน 10 วินาที) 1. **เลือกประเทศ** จากเมนูแบบหล่นลง: สหรัฐอเมริกา (+1), สหราชอาณาจักร (+44), เม็กซิโก (+52) หรือ อินเดีย (+91) 2. **เลือกภูมิภาค** เพื่อรับรหัสพื้นที่ที่ถูกต้อง: - เม็กซิโก: CDMX (55), กวาดาลาฮาร่า (33), มอนเทอร์เรย์ (81) - สหรัฐอเมริกา: แตกต่างกันไปตามรัฐ - สหราชอาณาจักร: ลอนดอน (20), แมนเชสเตอร์ (161) หรือโทรศัพท์มือถือ (7xxx) 3. **สลับระหว่างมือถือหรือโทรศัพท์บ้าน** ขึ้นอยู่กับสิ่งที่คุณกำลังทดสอบ 4. **เลือกรูปแบบ**: ระหว่างประเทศ (+รหัสประเทศ) หรือท้องถิ่น 5. **คลิก "สร้าง"** และคัดลอกผลลัพธ์ ### ตัวอย่างเชิงปฏิบัติ: การทดสอบฟอร์มติดต่อของเม็กซิโก สมมติว่าคุณกำลังสร้างฟอร์มลงทะเบียนสำหรับผู้ใช้ชาวเม็กซิโกและต้องการทดสอบการตรวจสอบโทรศัพท์: **สำหรับหมายเลขมือถือในเม็กซิโกซิตี้:** - ประเทศ: "+52 เม็กซิโก" - ภูมิภาค: "CDMX (เม็กซิโกซิตี้)" - มือถือ: เปิดสลับ - รูปแบบ: ระหว่างประเทศ (เพื่อทดสอบการจัดการ "+52") - คลิกสร้าง → ผลลัพธ์: "+52 55 8374 2916" **เพื่อทดสอบรูปแบบท้องถิ่น:** - คงการตั้งค่าเดิม สลับระหว่างประเทศปิด - สร้าง → ผลลัพธ์: "55 8374 2916" ตอนนี้คุณมีสองรูปแบบที่ถูกต้องเพื่อทดสอบว่าฟอร์มของคุณจัดการอย่างไรกับทั้งสองรูปแบบ ส่งผ่านสิ่งเหล่านี้ในตัวตรวจสอบของคุณเพื่อให้แน่ใจว่ายอมรับทั้งสองรูปแบบ ## ตัวอย่างการใช้งาน โค้ดด้านล่างแสดงวิธีการสร้างและตรวจสอบหมายเลขโทรศัพท์ในภาษาต่างๆ ตัวอย่างเหล่านี้แสดงถึงตรรกะหลัก—ในการใช้งานจริง ควรพิจารณาใช้ [libphonenumber](https://github.com/google/libphonenumber) สำหรับการตรวจสอบที่ครอบคลุม ### JavaScript1// ตัวอย่าง JavaScript ของการสร้างหมายเลขโทรศัพท์มือถือแบบเม็กซิโกแบบสุ่ม
2function generateMexicanMobileNumber(international = true) {
3 // รหัสพื้นที่เม็กซิโกซิตี้
4 const areaCode = "55";
5
6 // สร้างหมายเลข 8 หลักแบบสุ่ม
7 let number = "";
8 for (let i = 0; i < 8; i++) {
9 number += Math.floor(Math.random() * 10);
10 }
11
12 // จัดรูปแบบหมายเลข
13 const formattedNumber = `${areaCode} ${number.substring(0, 4)} ${number.substring(4, 8)}`;
14
15 // เพิ่มรหัสประเทศหากร้องขอรูปแบบระหว่างประเทศ
16 return international ? `+52 ${formattedNumber}` : formattedNumber;
17}
18
19// ฟังก์ชันตรวจสอบหมายเลขโทรศัพท์ของเม็กซิโก
20function validateMexicanPhoneNumber(number) {
21 // รูปแบบสำหรับรูปแบบระหว่างประเทศ
22 const intlPattern = /^\+52 \d{2} \d{4} \d{4}$/;
23
24 // รูปแบบสำหรับรูปแบบภายในประเทศ
25 const localPattern = /^\d{2} \d{4} \d{4}$/;
26
27 return intlPattern.test(number) || localPattern.test(number);
28}
29
30// ตัวอย่างการใช้งาน
31const phoneNumber = generateMexicanMobileNumber();
32console.log(phoneNumber); // ตัวอย่าง: +52 55 1234 5678
33console.log(`Is valid: ${validateMexicanPhoneNumber(phoneNumber)}`); // Is valid: true
34Python
1# ตัวอย่าง Python ของการสร้างและตรวจสอบหมายเลขโทรศัพท์
2import random
3import re
4
5def generate_us_phone_number(international=True):
6 """สร้างหมายเลขโทรศัพท์ของสหรัฐอเมริกาแบบสุ่ม"""
7 # สร้างรหัสพื้นที่ (หลีกเลี่ยงรหัสเช่น 911)
8 area_code = random.randint(200, 999)
9
10 # สร้างหมายเลข 7 หลักแบบสุ่ม
11 prefix = random.randint(200, 999)
12 line = random.randint(1000, 9999)
13
14 # จัดรูปแบบหมายเลข
15 if international:
16 return f"+1 {area_code} {prefix} {line}"
17 else:
18 return f"({area_code}) {prefix}-{line}"
19
20def validate_us_phone_number(number):
21 """ตรวจสอบว่าสตริงตรงกับรูปแบบหมายเลขโทรศัพท์ของสหรัฐอเมริกาหรือไม่"""
22 # รูปแบบสำหรับรูปแบบระหว่างประเทศ
23 intl_pattern = r'^\+1 \d{3} \d{3} \d{4}$'
24
25 # รูปแบบสำหรับรูปแบบภายในประเทศ
26 local_pattern = r'^\(\d{3}\) \d{3}-\d{4}$'
27
28 return bool(re.match(intl_pattern, number) or re.match(local_pattern, number))
29
30# ตัวอย่างการใช้งาน
31phone = generate_us_phone_number()
32print(phone) # ตัวอย่าง: +1 555 123 4567
33print(f"Is valid: {validate_us_phone_number(phone)}") # Is valid: True
34Java
1import java.util.Random;
2import java.util.regex.Pattern;
3
4public class PhoneNumberGenerator {
5 private static final Random random = new Random();
6
7 public static String generateUKMobileNumber(boolean international) {
8 // หมายเลขมือถือของสหราชอาณาจักรเริ่มต้นด้วย '7'
9 StringBuilder number = new StringBuilder("7");
10
11 // สร้างหมายเลข 9 หลักแบบสุ่ม
12 for (int i = 0; i < 9; i++) {
13 number.append(random.nextInt(10));
14 }
15
16 // จัดรูปแบบหมายเลข
17 String formatted = number.substring(0, 4) + " " + number.substring(4, 10);
18
19 // เพิ่มรหัสประเทศหากร้องขอรูปแบบระหว่างประเทศ
20 return international ? "+44 " + formatted : "0" + formatted;
21 }
22
23 public static boolean validateUKMobileNumber(String number) {
24 // รูปแบบสำหรับรูปแบบระหว่างประเทศ
25 Pattern intlPattern = Pattern.compile("^\\+44 7\\d{3} \\d{6}$");
26
27 // รูปแบบสำหรับรูปแบบภายในประเทศ
28 Pattern localPattern = Pattern.compile("^07\\d{3} \\d{6}$");
29
30 return intlPattern.matcher(number).matches() ||
31 localPattern.matcher(number).matches();
32 }
33
34 public static void main(String[] args) {
35 String phoneNumber = generateUKMobileNumber(true);
36 System.out.println(phoneNumber); // ตัวอย่าง: +44 7123 456789
37 System.out.println("Is valid: " + validateUKMobileNumber(phoneNumber)); // Is valid: true
38 }
39}
40PHP
1<?php
2// ตัวอย่าง PHP ของการสร้างและตรวจสอบหมายเลขโทรศัพท์มือถือของอินเดีย
3
4function generateIndianMobileNumber($international = true) {
5 // หมายเลขมือถือของอินเดียเริ่มต้นด้วย 6, 7, 8, หรือ 9
6 $prefixes = [6, 7, 8, 9];
7 $prefix = $prefixes[array_rand($prefixes)];
8
9 // สร้างหมายเลข 9 หลักแบบสุ่ม
10 $number = $prefix;
11 for ($i = 0; $i < 9; $i++) {
12 $number .= rand(0, 9);
13 }
14
15 // จัดรูปแบบหมายเลข
16 $formatted = substr($number, 0, 5) . " " . substr($number, 5, 5);
17
18 // เพิ่มรหัสประเทศหากร้องขอรูปแบบระหว่างประเทศ
19 return $international ? "+91 " . $formatted : $formatted;
20}
21
22function validateIndianMobileNumber($number) {
23 // รูปแบบสำหรับรูปแบบระหว่างประเทศ
24 $intlPattern = '/^\+91 [6-9]\d{4} \d{5}$/';
25
26 // รูปแบบสำหรับรูปแบบภายในประเทศ
27 $localPattern = '/^[6-9]\d{4} \d{5}$/';
28
29 return preg_match($intlPattern, $number) || preg_match($localPattern, $number);
30}
31
32// ตัวอย่างการใช้งาน
33$phoneNumber = generateIndianMobileNumber();
34echo $phoneNumber . "\n"; // ตัวอย่าง: +91 98765 43210
35echo "Is valid: " . (validateIndianMobileNumber($phoneNumber) ? "true" : "false") . "\n"; // Is valid: true
36?>
37C#
1using System;
2using System.Text;
3using System.Text.RegularExpressions;
4
5public class PhoneNumberGenerator
6{
7 private static Random random = new Random();
8
9 public static string GenerateMexicanMobileNumber(bool international = true)
10 {
11 // รหัสพื้นที่เม็กซิโกซิตี้
12 string areaCode = "55";
13
14 // สร้างหมายเลข 8 หลักแบบสุ่ม
15 StringBuilder number = new StringBuilder();
16 for (int i = 0; i < 8; i++)
17 {
18 number.Append(random.Next(10));
19 }
20
21 // จัดรูปแบบหมายเลข
22 string formattedNumber = $"{areaCode} {number.ToString(0, 4)} {number.ToString(4, 4)}";
23
24 // เพิ่มรหัสประเทศหากร้องขอรูปแบบระหว่างประเทศ
25 return international ? $"+52 {formattedNumber}" : formattedNumber;
26 }
27
28 public static bool ValidateMexicanPhoneNumber(string number)
29 {
30 // รูปแบบสำหรับรูปแบบระหว่างประเทศ
31 Regex intlPattern = new Regex(@"^\+52 \d{2} \d{4} \d{4}$");
32
33 // รูปแบบสำหรับรูปแบบภายในประเทศ
34 Regex localPattern = new Regex(@"^\d{2} \d{4} \d{4}$");
35
36 return intlPattern.IsMatch(number) || localPattern.IsMatch(number);
37 }
38
39 public static void Main()
40 {
41 string phoneNumber = GenerateMexicanMobileNumber();
42 Console.WriteLine(phoneNumber); // ตัวอย่าง: +52 55 1234 5678
43 Console.WriteLine($"Is valid: {ValidateMexicanPhoneNumber(phoneNumber)}"); // Is valid: True
44 }
45}
46กรณีการใช้งานในโลกแห่งความเป็นจริงสำหรับการสร้างหมายเลขโทรศัพท์
การทดสอบตรรกะการตรวจสอบแบบฟอร์ม
เมื่อสร้างแบบฟอร์มการลงทะเบียน คุณจำเป็นต้องตรวจสอบว่าการตรวจสอบจับรูปแบบหมายเลขที่ไม่ถูกต้องโดยไม่ปฏิเสธหมายเลขที่ถูกต้อง นี่คือสิ่งที่เกิดขึ้นโดยทั่วไป: นักพัฒนาทดสอบด้วยรูปแบบง่ายๆ เช่น "555-1234" หรือ "123456789" ซึ่งไม่เผยให้เห็นกรณีพิเศษ
สถานการณ์ทั่วไปคือการลงทะเบียนผู้ใช้ระหว่างประเทศ แบบฟอร์มของคุณอาจยอมรับหมายเลขของสหรัฐอเมริกาได้อย่างสมบูรณ์ แต่ล้มเหลวกับหมายเลขของสหราชอาณาจักรเพราะคุณไม่ได้คำนึงถึงความยาวที่แตกต่างกันของรหัสภูมิศาสตร์ การสร้างหมายเลขเฉพาะประเทศจะช่วยให้คุณพบปัญหาเหล่านี้ก่อนที่ผู้ใช้จะรายงาน
เคล็ดลับโปร: สร้างหมายเลข 50-100 หมายเลขสำหรับแต่ละประเทศที่คุณสนับสนุนและรันผ่านตัวตรวจสอบของคุณ คุณจะพบช่องว่างในรูปแบบ regex อย่างรวดเร็ว
การเติมฐานข้อมูลการพัฒนา
จากประสบการณ์ของฉันในการทำงานกับชุดข้อมูลขนาดใหญ่ ข้อมูลทดสอบที่สมจริงทำให้เกิดความแตกต่างอย่างมากในการจับบั๊กส่วนติดต่อผู้ใช้ เมื่อตารางลูกค้าของคุณมี 10,000 รายการที่แสดง "555-5555" คุณจะไม่สังเกตเห็นว่าคอลัมน์โทรศัพท์ไม่กว้างพอสำหรับรูปแบบระหว่างประเทศ "+44 7700 123456"
สิ่งที่ใช้ได้ดี: สร้างหมายเลขที่หลากหลาย (ประเทศต่างๆ การผสมผสานระหว่างมือถือ/โทรศัพท์พื้นฐาน) ให้ตรงกับการกระจายในการผลิตของคุณ หากผู้ใช้ 70% อยู่ในเม็กซิโก ให้สร้างข้อมูลทดสอบ 70% เป็นหมายเลขของเม็กซิโก นี่จะเผยให้เห็นปัญหาการแสดงผล ปัญหาการเรียงลำดับ และบั๊กการส่งออกที่คุณจะพลาดเป็นอื่นๆ
การทดสอบการรวมระบบ API
การทดสอบ API SMS หรือเสียงต้องใช้หมายเลขโทรศัพท์ แต่คุณไม่สามารถใช้ข้อมูลลูกค้าจริงในการพัฒนา ผู้ให้บริการเช่น Twilio มีหมายเลขทดสอบ แต่มีข้อจำกัด สำหรับการทดสอบที่ครอบคลุม - โดยเฉพาะอย่างยิ่งการจำกัดอัตรา การประมวลผลเป็นชุด และการจัดการข้อผิดพลาด - คุณต้องมีปริมาณ
ข้อผิดพลาดที่พบบ่อย: การทดสอบเฉพาะกับหมายเลขโทรศัพท์ของตัวเอง สิ่งนี้จะไม่เผยให้เห็นปัญหากับรูปแบบที่แตกต่างหรือหมายเลขระหว่างประเทศ สร้างชุดหมายเลขที่ตรงกับตลาดเป้าหมายของคุณ และคุณจะพบบั๊กการจัดรูปแบบก่อนที่จะถึงการผลิต
สภาพแวดล้อมการศึกษาและการสาธิต
เมื่อฝึกอบรมพนักงานในระบบ CRM หรือสาธิตซอฟต์แวร์ให้กับลูกค้า คุณต้องมีข้อมูลที่ดูสมจริงโดยไม่เปิดเผยข้อมูลลูกค้าที่แท้จริง หมายเลขสุ่มเช่น "1234567890" ดูไม่จริงและบั่นทอนความน่าเชื่อถือ
สิ่งที่ฉันพบว่าเป็นประโยชน์: สร้างชุดข้อมูลทดสอบที่สมบูรณ์ด้วยชื่อ ที่อยู่ และหมายเลขโทรศัพท์ที่จัดรูปแบบอย่างถูกต้องสำหรับภูมิภาคที่คุณกำลังสาธิต นี่ทำให้การฝึกอบรมมีประสิทธิภาพมากขึ้นเพราะสะท้อนสิ่งที่ผู้ใช้จะเห็นในการผลิต
การเปรียบเทียบกับโซลูชันทางเลือก
ไลบรารี libphonenumber ของ Google
สำหรับการตรวจสอบในการผลิต libphonenumber ของ Google ถือเป็นมาตรฐานทองคำ สามารถจัดการประเทศได้มากกว่า 200 ประเทศ ตรวจสอบกับข้อมูลผู้ให้บริการจริง และแยกวิเคราะห์หมายเลขในรูปแบบต่างๆ อย่างไรก็ตาม มันออกแบบมาเพื่อการตรวจสอบ ไม่ใช่การสร้าง
เมื่อใดควรใช้ libphonenumber: เมื่อคุณต้องการตรวจสอบอินพุตผู้ใช้จริงในการผลิต มันจะจับปัญหาต่างๆ เช่น รหัสพื้นที่ไม่ถูกต้องและช่วงหมายเลขที่ถูกยกเลิก
เมื่อใดควรใช้เครื่องมือนี้: เมื่อคุณต้องการข้อมูลทดสอบอย่างรวดเร็วโดยไม่ต้องติดตั้งไลบรารี เครื่องมือของเราสร้างได้ภายในวินาที ในขณะที่การรวม libphonenumber ใช้เวลาหลายชั่วโมง
ไลบรารี Faker และชุดการสร้างข้อมูล
เครื่องมือเช่น Faker.js หรือไลบรารี Faker ของ Python สร้างหมายเลขโทรศัพท์พร้อมกับชื่อ ที่อยู่ และข้อมูลปลอมอื่นๆ พวกเขาเยี่ยมมากสำหรับการสร้างโปรไฟล์ผู้ใช้ที่สมบูรณ์
ข้อจำกัด: ไลบรารี Faker ส่วนใหญ่สร้างหมายเลขที่ดูถูกต้อง แต่อาจไม่ปฏิบัติตามกฎเฉพาะของประเทศทั้งหมด ตัวอย่างเช่น พวกเขาอาจสร้างหมายเลขสหราชอาณาจักรที่เริ่มต้นด้วย 8 (ซึ่งไม่ใช่คำนำหน้ามือถือที่ถูกต้อง)
ข้อได้เปรียบของเครื่องมือนี้: เรามุ่งเน้นเฉพาะกฎของหมายเลขโทรศัพท์ เพื่อให้แน่ใจว่าหมายเลขที่สร้างขึ้นปฏิบัติตามรูปแบบเฉพาะของประเทศอย่างถูกต้อง
หมายเลขทดสอบจากผู้ให้บริการโทรคมนาคม
ผู้ให้บริการเช่น Twilio และ Vonage มีหมายเลขโทรศัพท์ทดสอบสำหรับการพัฒนา API หมายเลขเหล่านี้เป็นหมายเลขที่ใช้งานได้จริง แต่ไม่ส่งข้อความหรือโทรออก
เมื่อใดควรใช้หมายเลขทดสอบของผู้ให้บริการ: สำหรับการทดสอบแบบครบวงจรที่คุณต้องการตรวจสอบการส่งข้อความหรือการโทรสำเร็จ
เมื่อใดควรใช้เครื่องมือนี้: สำหรับการทดสอบยูนิต การทดสอบส่วนติดต่อผู้ใช้ และการเติมข้อมูลฐานข้อมูลที่คุณต้องการปริมาณและความหลากหลายโดยไม่มีขีดจำกัดอัตราของ API หรือค่าใช้จ่าย
ประวัติของรูปแบบและมาตรฐานหมายเลขโทรศัพท์
วิวัฒนาการของรูปแบบและมาตรฐานหมายเลขโทรศัพท์มีความเชื่อมโยงอย่างใกล้ชิดกับการพัฒนาเทคโนโลยีและโครงสร้างพื้นฐานการสื่อสารโทรคมนาคมทั่วโลก
ระบบโทรศัพท์ในยุคแรก (ค.ศ. 1870-1950)
เมื่อระบบโทรศัพท์ถูกนำมาใช้ครั้งแรกในช่วงปลายศตวรรษที่ 19 หมายเลขโทรศัพท์มีความสั้นมาก โดยมักมีเพียง 2-4 หลัก เนื่องจากแต่ละเมืองหรือชุมชนมีศูนย์โทรศัพท์เป็นของตนเอง โดยผู้ปฏิบัติการจะเชื่อมต่อสายโดยการเสียบสายด้วยมือที่แผงสวิตช์
เมื่อเครือข่ายโทรศัพท์เริ่มขยายตัว หมายเลขก็เริ่มยาวขึ้นและมีการแนะนำรหัสพื้นที่ แผนการกำหนดหมายเลขของอเมริกาเหนือ (NANP) ถูกสร้างขึ้นในปี ค.ศ. 1947 เพื่อสร้างระบบที่เป็นเอกภาพทั่วสหรัฐอเมริกาและแคนาดา โดยนำเสนอรูปแบบหมายเลข 3-3-4 หลัก (รหัสพื้นที่ รหัสแลกเปลี่ยน หมายเลขผู้สมัคร)
การพัฒนามาตรฐานระหว่างประเทศ (ค.ศ. 1960-1980)
สหภาพโทรคมนาคมระหว่างประเทศ (ITU) ซึ่งก่อตั้งขึ้นในปี ค.ศ. 1865 ในฐานะสหภาพโทรเลขระหว่างประเทศ เริ่มพัฒนามาตรฐานระหว่างประเทศสำหรับการกำหนดหมายเลขโทรศัพท์ในช่วงทศวรรษ 1960 ซึ่งนำไปสู่การสร้างรหัสประเทศและการมาตรฐานขั้นตอนการโทรระหว่างประเทศ
ในปี ค.ศ. 1964 ITU ได้แนะนำข้อเสนอ E.163 ซึ่งสถาปนาแผนการกำหนดหมายเลขโทรศัพท์ระหว่างประเทศ ต่อมาได้ถูกแทนที่ด้วยข้อเสนอ E.164 ในปี ค.ศ. 1984 ซึ่งยังคงเป็นมาตรฐานปัจจุบันสำหรับการกำหนดหมายเลขโทรคมนาคมสาธารณะระหว่างประเทศ
การปฏิวัติโทรศัพท์มือถือ (ค.ศ. 1990-2000)
การแพร่หลายของโทรศัพท์มือถือในช่วงทศวรรษ 1990 และ 2000 สร้างความท้าทายใหม่ให้กับระบบการกำหนดหมายเลข หลายประเทศได้แนะนำคำนำหน้าหรือช่วงหมายเลขเฉพาะสำหรับโทรศัพท์มือถือ ตัวอย่างเช่น ในสหราชอาณาจักร หมายเลขมือถือมักขึ้นต้นด้วย '07' ในขณะที่ในเม็กซิโก หมายเลขมือถือคงใช้รูปแบบเดียวกับโทรศัพท์บ้าน แต่มีรหัสพื้นที่ที่แตกต่าง
มาตรฐานสมัยใหม่และยุคเสียงผ่านไอพี (ค.ศ. 2000-ปัจจุบัน)
กับการเติบโตของเสียงผ่านไอพี (VoIP) และการสื่อสารผ่านอินเทอร์เน็ต รูปแบบหมายเลขโทรศัพท์มีความยืดหยุ่นมากขึ้น มาตรฐาน E.164 ได้รับการปรับให้รองรับเทคโนโลยีใหม่เหล่านี้ และหลายประเทศได้แก้ไขแผนการกำหนดหมายเลขเพื่อสร้างความจุเพิ่มขึ้น
การแนะนำการพกพาหมายเลขในหลายประเทศได้ทำให้ความแตกต่างระหว่างหมายเลขมือถือและโทรศัพท์บ้านเลือนลง เนื่องจากผู้ใช้สามารถเก็บหมายเลขของตนเมื่อเปลี่ยนประเภทบริการ
ในปัจจุบัน รูปแบบหมายเลขโทรศัพท์ยังคงมีวิวัฒนาการต่อเนื่อง โดยบางประเทศกำลังพิจารณาการยกเลิกรหัสพื้นที่หรือการบูรณาการหมายเลขโทรศัพท์กับอัตลักษณ์ดิจิทัล อย่างไรก็ตาม โครงสร้างพื้นฐานที่ถูกสถาปนาโดย E.164 ยังคงเป็นรากฐานของการกำหนดหมายเลขโทรคมนาคมระดับโลก
คำถามที่พบบ่อย
ฉันจะสร้างหมายเลขโทรศัพท์สุ่มสำหรับทดสอบได้อย่างไร
เลือกประเทศและภูมิภาคเป้าหมายจากเมนูแบบหล่นลง สลับระหว่างรูปแบบโทรศัพท์มือถือหรือโทรศัพท์บ้าน และคลิก "สร้างหมายเลขโทรศัพท์" เครื่องมือจะสร้างหมายเลขที่ถูกต้องตามโครงสร้างและกฎการจัดรูปแบบของประเทศนั้น คุณสามารถสลับระหว่างรูปแบบสากล (พร้อมรหัสประเทศ) และรูปแบบท้องถิ่น
สำหรับการทดสอบสถานการณ์ต่างๆ ให้สร้างหมายเลขหลายๆ แบบด้วยการตั้งค่าที่แตกต่างกัน—นี่จะช่วยให้คุณพบข้อบกพร่องในการตรวจสอบความถูกต้องที่ปรากฏเฉพาะกับรูปแบบบางอย่าง
นี่เป็นหมายเลขโทรศัพท์จริงที่สามารถรับสายหรือข้อความได้หรือไม่
ไม่ใช่ หมายเลขที่สร้างขึ้นมีรูปแบบที่ถูกต้อง แต่สร้างขึ้นแบบสุ่มและไม่ได้กำหนดให้กับผู้ใช้จริง พวกมันออกแบบมาเพื่อทดสอบตรรกะการตรวจสอบความถูกต้อง เติมฐานข้อมูล และสาธิตซอฟต์แวร์—ไม่ใช่เพื่อการสื่อสารจริง
สำคัญ: อย่าพยายามโทรหรือส่งข้อความไปยังหมายเลขเหล่านี้ พวกมันอาจเป็นของบุคคลจริงหรือยังไม่ได้กำหนด
อะไรคือความแตกต่างระหว่างรูปแบบโทรศัพท์สากลและท้องถิ่น
รูปแบบสากล ประกอบด้วยรหัสประเทศพร้อมเครื่องหมายบวก: +52 55 1234 5678 (เม็กซิโก) นี่คือมาตรฐาน E.164 ที่ใช้ในการสื่อสารระดับโลก
รูปแบบท้องถิ่น แสดงวิธีการโทรภายในประเทศ: 55 1234 5678 (เม็กซิโก) ไม่รวมรหัสประเทศเนื่องจากการโทรภายในประเทศไม่ต้องใช้
เมื่อทดสอบแอปพลิเคชันที่ให้บริการผู้ใช้ระหว่างประเทศ ให้ตรวจสอบความถูกต้องของทั้งสองรูปแบบ ผู้ใช้ป้อนหมายเลขไม่สม่ำเสมอ—บางคนวาง "+1 555..." บางคนพิมพ์ "(555)..." ตัวตรวจสอบที่ดีจะจัดการได้ทั้งสองรูปแบบ
ทำไมแต่ละประเทศจึงมีรูปแบบหมายเลขโทรศัพท์ที่แตกต่างกัน
แต่ละประเทศพัฒนาแผนการกำหนดหมายเลขอย่างอิสระ ได้รับอิทธิพลจากขนาดประชากร การแบ่งเขตภูมิศาสตร์ และช่วงเวลาที่สร้างโครงสร้างโทรคมนาคม สหรัฐอเมริกาใช้แผนการกำหนดหมายเลขของอเมริกาเหนือในปี 1947 ด้วยรูปแบบ 3-3-4 หลัก สหราชอาณาจักรใช้รหัสภูมิศาสตร์ความยาวแปรผัน อินเดียกำหนดมาตรฐานหมายเลขมือถือ 10 หลักเพื่อรองรับประชากรขนาดใหญ่
มาตรฐาน E.164 ขององค์การโทรคมนาคมระหว่างประเทศ (ITU) ให้กรอบการทำงาน แต่ละประเทศนำไปใช้แตกต่างกันตามความต้องการ นี่คือเหตุผลที่การตรวจสอบความถูกต้องของหมายเลขโทรศัพท์มีความซับซ้อน—คุณไม่สามารถใช้รูปแบบ regex เดียวกันสำหรับทุกประเทศ
[ส่วนที่เหลือของการแปลจะดำเนินต่อไป...]
แหล่งอ้างอิง
-
สหภาพโทรคมนาคมระหว่างประเทศ (ITU) "E.164: แผนการกำหนดหมายเลขโทรคมนาคมสาธารณะระหว่างประเทศ" ITU
-
การบริหารแผนการกำหนดหมายเลขของอเมริกาเหนือ "เกี่ยวกับแผนการกำหนดหมายเลขโทรศัพท์ของอเมริกาเหนือ" NANPA
-
Ofcom (สหราชอาณาจักร) "หมายเลขโทรศัพท์ - แผนการกำหนดหมายเลขโทรศัพท์แห่งชาติ" Ofcom
-
กระทรวงโทรคมนาคม รัฐบาลอินเดีย "แผนการกำหนดหมายเลขแห่งชาติ" DoT อินเดีย
-
สถาบันโทรคมนาคมแห่งรัฐบาลกลาง (เม็กซิโก) "แผนการกำหนดหมายเลขแห่งชาติ" IFT เม็กซิโก
-
ไลบรารี libphonenumber ของ Google "การแยกวิเคราะห์ การจัดรูปแบบ และการตรวจสอบหมายเลขโทรศัพท์" คลังข้อมูล GitHub
-
คู่มือการโทรศัพท์ระหว่างประเทศ "รหัสการโทรระหว่างประเทศและข้อมูล" WTNG
เริ่มสร้างหมายเลขโทรศัพท์ทดสอบ
ต้องการหมายเลขโทรศัพท์ที่ถูกต้องสำหรับเซสชันการทดสอบถัดไปของคุณหรือไม่? เลือกประเทศของคุณ เลือกโทรศัพท์มือถือหรือโทรศัพท์บ้าน และสร้างหมายเลขที่มีการจัดรูปแบบอย่างถูกต้องซึ่งเป็นไปตามรูปแบบของโลกแห่งความเป็นจริง เครื่องมือนี้จัดการความซับซ้อนของมาตรฐานระหว่างประเทศในขณะที่ยังคงอินเทอร์เฟซให้เรียบง่าย - ไม่ต้องมีบัญชี ไม่ต้องมีคีย์ API เพียงแค่ผลลัพธ์ทันที
เหมาะสำหรับนักพัฒนาที่ทดสอบตรรกะการตรวจสอบความถูกต้อง ทีม QA ที่กำลังเติมข้อมูลในสภาพแวดล้อมการทดสอบ หรือผู้ที่ต้องการตัวอย่างหมายเลขโทรศัพท์ที่สมจริง