Trình Tạo và Xác Thực Số Điện Thoại - Tạo Số Kiểm Tra Cho Bất Kỳ Quốc Gia Nào
Tạo số điện thoại kiểm tra hợp lệ cho Mỹ, Anh, Mexico, Ấn Độ. Tạo số điện thoại di động hoặc cố định với định dạng chính xác. Công cụ miễn phí cho các nhà phát triển kiểm tra logic xác thực.
Trình Tạo và Kiểm Tra Số Điện Thoại
Tài liệu hướng dẫn
Tại Sao Việc Tạo Số Điện Thoại Lại Quan Trọng
Việc kiểm tra logic xác thực số điện thoại có thể rất khó khăn. Bạn cần các số thực tế tuân theo các mẫu cụ thể của từng quốc gia, nhưng việc tạo dữ liệu kiểm tra một cách thủ công lại mất nhiều công sức và dễ mắc lỗi. Công cụ này giải quyết vấn đề đó bằng cách tạo ra các số điện thoại có cấu trúc hợp lệ cho nhiều quốc gia - bao gồm cả mã vùng, tiền tố di động và định dạng chính xác.
Cho dù bạn đang xây dựng một biểu mẫu liên hệ, kiểm tra API SMS, hay điền dữ liệu cho cơ sở dữ liệu phát triển, bạn sẽ nhận được các số điện thoại phù hợp với các định dạng thực tế. Công cụ xử lý sự phức tạp của các tiêu chuẩn quốc tế (như E.164) trong khi vẫn giữ giao diện đơn giản: chọn quốc gia, chọn di động hoặc điện thoại cố định, và tạo.
Điều gì làm cho công cụ này khác với các trình tạo số ngẫu nhiên? Nó tôn trọng các quy tắc. Các số di động Mexico được gán mã vùng chính xác (55 cho Mexico City, 33 cho Guadalajara). Các số điện thoại Hoa Kỳ tránh các mẫu không hợp lệ như bắt đầu mã vùng bằng 0 hoặc 1. Các số di động Vương quốc Anh bắt đầu bằng 7. Những chi tiết này rất quan trọng khi bạn đang kiểm tra logic xác thực mà người dùng sẽ gặp trong môi trường sản xuất.
Cách Hoạt Động của Trình Tạo Số Điện Thoại
Đằng sau giao diện đơn giản, trình tạo áp dụng các quy tắc riêng của từng quốc gia để tạo ra các số điện thoại hợp lệ:
-
Lựa Chọn Quốc Gia & Khu Vực: Chọn quốc gia và khu vực mục tiêu của bạn. Điều này xác định mã vùng—ví dụ, chọn "CDMX" ở Mexico sẽ tự động sử dụng mã vùng 55.
-
Logic Loại Số: Số di động và điện thoại cố định tuân theo các mẫu khác nhau. Ở Vương quốc Anh, số di động bắt đầu bằng 7, trong khi số điện thoại cố định sử dụng mã địa lý như 20 cho London. Công cụ áp dụng tiền tố chính xác dựa trên lựa chọn của bạn.
-
Tạo Chữ Số Ngẫu Nhiên: Đối với các số thuê bao, công cụ tạo ra các chữ số ngẫu nhiên trong phạm vi hợp lệ. Không phải tất cả các chữ số đều hoạt động ở mọi nơi—mã vùng của Hoa Kỳ không thể bắt đầu bằng 0 hoặc 1, và một số mã được dành riêng cho các dịch vụ.
-
Áp Dụng Định Dạng: Các số được định dạng theo tiêu chuẩn E.164 (quốc tế) hoặc quy ước địa phương. Số điện thoại Mexico xuất hiện như "+52 55 1234 5678" ở cấp quốc tế hoặc "55 1234 5678" ở cấp địa phương.
-
Xác Thực: Mỗi số được tạo ra đều được kiểm tra so với các mẫu regex cụ thể của quốc gia đó. Điều này giúp bắt các lỗi cấu trúc trước khi hiển thị số.
Những gì bạn sẽ không thấy: Công cụ cố ý tránh các số khẩn cấp (như 911), phạm vi thử nghiệm và mã dịch vụ đặc biệt. Điều này làm cho đầu ra an toàn hơn cho môi trường thử nghiệm nơi bạn không muốn vô tình kích hoạt các dịch vụ thực.
Công thức và Thuật toán
Mặc dù việc tạo số điện thoại có vẻ như là một quá trình ngẫu nhiên đơn giản, nhưng việc triển khai đúng đòi hỏi phải hiểu các ràng buộc và mẫu toán học làm cho số điện thoại hợp lệ ở các khu vực khác nhau.
Thuật toán Tạo Số Ngẫu Nhiên
Thuật toán cơ bản để tạo số điện thoại hợp lệ tuân theo công thức sau:
Trong đó:
- là số điện thoại hoàn chỉnh
- là mã quốc gia (tùy chọn cho định dạng địa phương)
- là mã vùng/khu vực
- là tiền tố (có thể có các ràng buộc dựa trên loại số)
- là số thuê bao (các chữ số ngẫu nhiên)
Thuật toán Xác Thực
Việc xác thực số điện thoại có thể được thể hiện như một thao tác so khớp mẫu biểu thức chính quy, có thể được biểu diễn toán học như sau:
undefined1// Ví dụ JavaScript về việc tạo số điện thoại di động Mexico ngẫu nhiên
2function generateMexicanMobileNumber(international = true) {
3 // Mã vùng Mexico City
4 const areaCode = "55";
5
6 // Tạo 8 chữ số ngẫu nhiên cho số điện thoại
7 let number = "";
8 for (let i = 0; i < 8; i++) {
9 number += Math.floor(Math.random() * 10);
10 }
11
12 // Định dạng số điện thoại
13 const formattedNumber = `${areaCode} ${number.substring(0, 4)} ${number.substring(4, 8)}`;
14
15 // Thêm mã quốc gia nếu được yêu cầu định dạng quốc tế
16 return international ? `+52 ${formattedNumber}` : formattedNumber;
17}
18
19// Hàm xác thực số điện thoại Mexico
20function validateMexicanPhoneNumber(number) {
21 // Mẫu cho định dạng quốc tế
22 const intlPattern = /^\+52 \d{2} \d{4} \d{4}$/;
23
24 // Mẫu cho định dạng local
25 const localPattern = /^\d{2} \d{4} \d{4}$/;
26
27 return intlPattern.test(number) || localPattern.test(number);
28}
29
30// Ví dụ sử dụng
31const phoneNumber = generateMexicanMobileNumber();
32console.log(phoneNumber); // Ví dụ: +52 55 1234 5678
33console.log(`Is valid: ${validateMexicanPhoneNumber(phoneNumber)}`); // Is valid: true
34Python
1# Ví dụ Python về việc tạo và xác thực số điện thoại
2import random
3import re
4
5def generate_us_phone_number(international=True):
6 """Tạo số điện thoại Hoa Kỳ ngẫu nhiên."""
7 # Tạo mã vùng (tránh các mã như 911)
8 area_code = random.randint(200, 999)
9
10 # Tạo 7 chữ số ngẫu nhiên cho số điện thoại
11 prefix = random.randint(200, 999)
12 line = random.randint(1000, 9999)
13
14 # Định dạng số điện thoại
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 """Xác thực xem chuỗi có khớp với mẫu số điện thoại Hoa Kỳ không."""
22 # Mẫu cho định dạng quốc tế
23 intl_pattern = r'^\+1 \d{3} \d{3} \d{4}$'
24
25 # Mẫu cho định dạng local
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# Ví dụ sử dụng
31phone = generate_us_phone_number()
32print(phone) # Ví dụ: +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 // Số điện thoại di động Anh bắt đầu bằng '7'
9 StringBuilder number = new StringBuilder("7");
10
11 // Tạo 9 chữ số ngẫu nhiên
12 for (int i = 0; i < 9; i++) {
13 number.append(random.nextInt(10));
14 }
15
16 // Định dạng số điện thoại
17 String formatted = number.substring(0, 4) + " " + number.substring(4, 10);
18
19 // Thêm mã quốc gia nếu được yêu cầu định dạng quốc tế
20 return international ? "+44 " + formatted : "0" + formatted;
21 }
22
23 public static boolean validateUKMobileNumber(String number) {
24 // Mẫu cho định dạng quốc tế
25 Pattern intlPattern = Pattern.compile("^\\+44 7\\d{3} \\d{6}$");
26
27 // Mẫu cho định dạng local
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); // Ví dụ: +44 7123 456789
37 System.out.println("Is valid: " + validateUKMobileNumber(phoneNumber)); // Is valid: true
38 }
39}
40PHP
1<?php
2// Ví dụ PHP về việc tạo và xác thực số điện thoại di động Ấn Độ
3
4function generateIndianMobileNumber($international = true) {
5 // Số điện thoại di động Ấn Độ bắt đầu bằng 6, 7, 8, hoặc 9
6 $prefixes = [6, 7, 8, 9];
7 $prefix = $prefixes[array_rand($prefixes)];
8
9 // Tạo 9 chữ số ngẫu nhiên
10 $number = $prefix;
11 for ($i = 0; $i < 9; $i++) {
12 $number .= rand(0, 9);
13 }
14
15 // Định dạng số điện thoại
16 $formatted = substr($number, 0, 5) . " " . substr($number, 5, 5);
17
18 // Thêm mã quốc gia nếu được yêu cầu định dạng quốc tế
19 return $international ? "+91 " . $formatted : $formatted;
20}
21
22function validateIndianMobileNumber($number) {
23 // Mẫu cho định dạng quốc tế
24 $intlPattern = '/^\+91 [6-9]\d{4} \d{5}$/';
25
26 // Mẫu cho định dạng local
27 $localPattern = '/^[6-9]\d{4} \d{5}$/';
28
29 return preg_match($intlPattern, $number) || preg_match($localPattern, $number);
30}
31
32// Ví dụ sử dụng
33$phoneNumber = generateIndianMobileNumber();
34echo $phoneNumber . "\n"; // Ví dụ: +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 // Mã vùng Mexico City
12 string areaCode = "55";
13
14 // Tạo 8 chữ số ngẫu nhiên cho số điện thoại
15 StringBuilder number = new StringBuilder();
16 for (int i = 0; i < 8; i++)
17 {
18 number.Append(random.Next(10));
19 }
20
21 // Định dạng số điện thoại
22 string formattedNumber = $"{areaCode} {number.ToString(0, 4)} {number.ToString(4, 4)}";
23
24 // Thêm mã quốc gia nếu được yêu cầu định dạng quốc tế
25 return international ? $"+52 {formattedNumber}" : formattedNumber;
26 }
27
28 public static bool ValidateMexicanPhoneNumber(string number)
29 {
30 // Mẫu cho định dạng quốc tế
31 Regex intlPattern = new Regex(@"^\+52 \d{2} \d{4} \d{4}$");
32
33 // Mẫu cho định dạng local
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); // Ví dụ: +52 55 1234 5678
43 Console.WriteLine($"Is valid: {ValidateMexicanPhoneNumber(phoneNumber)}"); // Is valid: True
44 }
45}
46Các Trường Hợp Sử Dụng Thực Tế của Việc Tạo Số Điện Thoại
Kiểm Tra Logic Xác Thực Biểu Mẫu
Khi xây dựng các biểu mẫu đăng ký, bạn cần xác minh rằng việc xác thực bắt được các số không đúng mà không từ chối các số hợp lệ. Điều thường xảy ra là: các nhà phát triển kiểm tra với các mẫu đơn giản như "555-1234" hoặc "123456789", những mẫu này không tiết lộ các trường hợp biên.
Một kịch bản phổ biến là đăng ký người dùng quốc tế. Biểu mẫu của bạn có thể chấp nhận số điện thoại Mỹ một cách hoàn hảo nhưng lại thất bại với số điện thoại Anh vì bạn không tính đến độ dài thay đổi của mã địa lý. Bằng cách tạo số điện thoại theo từng quốc gia, bạn có thể phát hiện những vấn đề này trước khi người dùng báo cáo.
Mẹo chuyên nghiệp: Tạo 50-100 số điện thoại cho mỗi quốc gia bạn hỗ trợ và chạy chúng qua trình xác thực của bạn. Bạn sẽ nhanh chóng tìm ra các khoảng trống trong các mẫu regex của mình.
Điền Dữ Liệu Cơ Sở Dữ Liệu Phát Triển
Theo kinh nghiệm của tôi làm việc với các tập dữ liệu lớn, dữ liệu thử nghiệm thực tế sẽ tạo nên sự khác biệt lớn trong việc phát hiện các lỗi giao diện người dùng. Khi bảng khách hàng của bạn có 10.000 mục đều hiển thị "555-5555", bạn sẽ không nhận thấy rằng các cột điện thoại không đủ rộng cho định dạng quốc tế "+44 7700 123456".
Điều hiệu quả: Tạo các số điện thoại đa dạng (các quốc gia khác nhau, hỗn hợp di động/điện thoại cố định) phù hợp với phân phối sản xuất của bạn. Nếu 70% người dùng của bạn ở Mexico, hãy tạo 70% dữ liệu thử nghiệm là số điện thoại Mexico. Điều này sẽ tiết lộ các vấn đề hiển thị, sắp xếp và xuất định dạng mà bạn sẽ bỏ qua.
Kiểm Tra Tích Hợp API
Kiểm tra các API SMS hoặc thoại đòi hỏi số điện thoại, nhưng bạn không thể sử dụng dữ liệu khách hàng thực tế trong quá trình phát triển. Các nhà cung cấp dịch vụ như Twilio cung cấp số điện thoại thử nghiệm, nhưng chúng bị giới hạn. Để kiểm tra toàn diện - đặc biệt là giới hạn tỷ lệ, xử lý hàng loạt và xử lý lỗi - bạn cần khối lượng lớn.
Một sai lầm thường gặp: Chỉ kiểm tra với số điện thoại của riêng bạn. Điều này sẽ không tiết lộ các vấn đề với các định dạng khác nhau hoặc số điện thoại quốc tế. Tạo một bộ số điện thoại phù hợp với các thị trường mục tiêu của bạn, và bạn sẽ phát hiện các lỗi định dạng trước khi chúng đến sản xuất.
Môi Trường Giáo Dục và Demo
Khi đào tạo nhân viên về các hệ thống CRM hoặc trình diễn phần mềm cho khách hàng, bạn cần dữ liệu trông giống thực tế mà không tiết lộ thông tin khách hàng thực sự. Các số ngẫu nhiên như "1234567890" trông giả và làm giảm uy tín.
Những gì tôi thấy hữu ích: Tạo các bộ dữ liệu thử nghiệm hoàn chỉnh với tên, địa chỉ và số điện thoại được định dạng đúng cho các khu vực bạn đang trình diễn. Điều này làm cho việc đào tạo hiệu quả hơn vì nó phản ánh những gì người dùng sẽ thấy trong sản xuất.
So sánh với các giải pháp thay thế
Thư viện libphonenumber của Google
Để xác thực trong sản xuất, libphonenumber của Google là tiêu chuẩn vàng. Nó xử lý hơn 200 quốc gia, xác thực dựa trên dữ liệu nhà mạng thực tế và phân tích số điện thoại ở nhiều định dạng khác nhau. Tuy nhiên, nó được thiết kế để xác thực, không phải để tạo số.
Khi nào sử dụng libphonenumber: Khi bạn cần xác thực đầu vào người dùng trong môi trường sản xuất. Nó bắt các vấn đề như mã vùng không hợp lệ và phạm vi số bị ngắt kết nối.
Khi nào sử dụng công cụ này: Khi bạn cần dữ liệu thử nghiệm nhanh chóng mà không cần thiết lập thư viện. Công cụ của chúng tôi tạo số trong vài giây; tích hợp libphonenumber mất nhiều giờ.
Thư viện Faker và Bộ tạo dữ liệu
Các công cụ như Faker.js hoặc thư viện Faker của Python tạo số điện thoại cùng với tên, địa chỉ và các dữ liệu giả khác. Chúng rất tuyệt vời để tạo các hồ sơ người dùng hoàn chỉnh.
Hạn chế: Hầu hết các thư viện faker tạo số trông có vẻ hợp lệ nhưng có thể không tuân theo tất cả các quy tắc của từng quốc gia. Ví dụ, chúng có thể tạo số điện thoại của Vương quốc Anh bắt đầu bằng 8 (không phải là tiền tố di động hợp lệ).
Ưu điểm của công cụ này: Chúng tôi tập trung cụ thể vào các quy tắc số điện thoại, đảm bảo các số được tạo tuân theo các mẫu của từng quốc gia một cách chính xác.
Số điện thoại thử nghiệm của Nhà cung cấp Viễn thông
Các nhà cung cấp như Twilio và Vonage cung cấp số điện thoại thử nghiệm cho việc phát triển API. Đây là những số điện thoại hoạt động thực tế nhưng không gửi tin nhắn hoặc thực hiện cuộc gọi.
Khi nào sử dụng số điện thoại thử nghiệm của nhà cung cấp: Để thử nghiệm từ đầu đến cuối nơi bạn cần xác minh việc gửi tin nhắn hoặc hoàn thành cuộc gọi.
Khi nào sử dụng công cụ này: Để thử nghiệm đơn vị, thử nghiệm giao diện người dùng và điền dữ liệu cơ sở dữ liệu nơi bạn cần khối lượng và sự đa dạng mà không bị giới hạn tốc độ API hoặc chi phí.
Lịch Sử Các Định Dạng và Tiêu Chuẩn Số Điện Thoại
Sự phát triển của các định dạng và tiêu chuẩn số điện thoại gắn liền chặt chẽ với sự phát triển của công nghệ và hạ tầng viễn thông trên toàn thế giới.
Hệ Thống Điện Thoại Ban Đầu (1870-1950)
Khi hệ thống điện thoại được giới thiệu lần đầu vào cuối thế kỷ 19, số điện thoại rất ngắn, thường chỉ 2-4 chữ số, vì mỗi thị trấn hay thành phố đều có trung tâm điện thoại độc lập riêng. Các nhân viên điều chuyển thủ công kết nối cuộc gọi bằng cách cắm dây vào bảng chuyển mạch.
Khi các mạng điện thoại phát triển, số điện thoại trở nên dài hơn và mã vùng được giới thiệu. Kế hoạch Đánh Số Bắc Mỹ (NANP) được tạo ra năm 1947 để thiết lập một hệ thống thống nhất trên toàn Hoa Kỳ và Canada, giới thiệu định dạng 3-3-4 chữ số quen thuộc (mã vùng, mã trao đổi, số thuê bao).
Phát Triển Tiêu Chuẩn Quốc Tế (1960-1980)
Liên Minh Viễn Thông Quốc Tế (ITU), được thành lập năm 1865 với tên gọi ban đầu là Liên Minh Điện Báo Quốc Tế, bắt đầu phát triển các tiêu chuẩn quốc tế cho việc đánh số điện thoại từ những năm 1960. Điều này dẫn đến việc tạo ra mã quốc gia và chuẩn hóa các quy trình quay số quốc tế.
Năm 1964, ITU giới thiệu Khuyến nghị E.163, thiết lập kế hoạch đánh số điện thoại quốc tế. Sau đó được thay thế bởi Khuyến nghị E.164 năm 1984, vẫn là tiêu chuẩn hiện tại cho việc đánh số viễn thông công cộng quốc tế.
Cuộc Cách Mạng Di Động (1990-2000)
Sự phổ biến rộng rãi của điện thoại di động trong những năm 1990 và 2000 đã tạo ra những thách thức mới cho các hệ thống đánh số. Nhiều quốc gia đã giới thiệu các tiền tố hoặc phạm vi số riêng dành cho điện thoại di động. Ví dụ, ở Vương quốc Anh, số di động thường bắt đầu bằng '07', trong khi ở Mexico, số di động vẫn giữ cùng định dạng với điện thoại cố định nhưng có mã vùng khác nhau.
Tiêu Chuẩn Hiện Đại và Kỷ Nguyên VoIP (2000-Hiện Tại)
Với sự trỗi dậy của Voice over IP (VoIP) và giao tiếp dựa trên internet, các định dạng số điện thoại đã trở nên linh hoạt hơn. Tiêu chuẩn E.164 đã được điều chỉnh để phù hợp với các công nghệ mới này, và nhiều quốc gia đã sửa đổi kế hoạch đánh số để tạo thêm năng lực.
Việc giới thiệu tính di động số ở nhiều quốc gia đã làm mờ ranh giới giữa số di động và số cố định, vì người dùng giờ đây có thể giữ nguyên số khi chuyển đổi giữa các loại dịch vụ.
Ngày nay, các định dạng số điện thoại vẫn tiếp tục phát triển, với một số quốc gia đang cân nhắc việc loại bỏ mã vùng hoặc tích hợp số điện thoại với danh tính kỹ thuật số. Tuy nhiên, cấu trúc cơ bản do E.164 thiết lập vẫn là nền tảng của việc đánh số viễn thông toàn cầu.
Câu Hỏi Thường Gặp
Làm thế nào để tạo số điện thoại ngẫu nhiên để kiểm tra?
Chọn quốc gia và khu vực mục tiêu từ các menu thả xuống, chuyển đổi giữa định dạng di động hoặc điện thoại cố định, và nhấp vào "Tạo Số Điện Thoại". Công cụ tạo ra một số có cấu trúc hợp lệ theo quy tắc định dạng của quốc gia đó. Bạn có thể chuyển đổi giữa định dạng quốc tế (có mã quốc gia +) và định dạng local.
Để kiểm tra nhiều kịch bản, hãy tạo một số lượng số với các cài đặt khác nhau—điều này giúp phát hiện các lỗi xác thực chỉ xuất hiện với các định dạng cụ thể.
Đây có phải là số điện thoại thực sự có thể nhận cuộc gọi hoặc tin nhắn không?
Không. Các số được tạo ra tuân theo các mẫu định dạng chính xác nhưng được tạo ngẫu nhiên và không được gán cho thuê bao thực. Chúng được thiết kế để kiểm tra logic xác thực, điền vào cơ sở dữ liệu và minh họa phần mềm—không phải để sử dụng trong viễn thông thực.
Quan trọng: Không bao giờ sử dụng các số này để thực hiện cuộc gọi hoặc tin nhắn thực. Chúng có thể thuộc về người thực hoặc không được gán.
Sự khác biệt giữa định dạng điện thoại quốc tế và local là gì?
Định dạng quốc tế bao gồm mã quốc gia với dấu cộng: +52 55 1234 5678 (Mexico). Đây là tiêu chuẩn E.164 được sử dụng cho viễn thông toàn cầu.
Định dạng local hiển thị cách bạn quay số trong nước: 55 1234 5678 (Mexico). Nó bỏ qua mã quốc gia vì các cuộc gọi nội địa không yêu cầu nó.
Khi kiểm tra các ứng dụng phục vụ người dùng quốc tế, hãy xác thực cả hai định dạng. Người dùng nhập số không nhất quán—một số dán "+1 555...", những người khác gõ "(555)...". Một trình xác thực mạnh mẽ xử lý cả hai.
Tại sao các quốc gia khác nhau lại có các định dạng số điện thoại khác nhau?
Mỗi quốc gia đã phát triển kế hoạch đánh số của riêng mình một cách độc lập, chịu ảnh hưởng bởi quy mô dân số, các phân chia địa lý và thời điểm xây dựng cơ sở hạ tầng điện thoại. Hoa Kỳ áp dụng Kế hoạch Đánh số Bắc Mỹ vào năm 1947 với mẫu 3-3-4 chữ số. Vương quốc Anh sử dụng mã địa lý có độ dài thay đổi. Ấn Độ đã tiêu chuẩn hóa thành số di động 10 chữ số để phù hợp với dân số khổng lồ của mình.
Tiêu chuẩn E.164 của Liên minh Viễn thông Quốc tế cung cấp một khuôn khổ, nhưng các quốc gia triển khai nó khác nhau dựa trên nhu cầu của họ. Đây là lý do tại sao việc xác thực điện thoại lại phức tạp—bạn không thể sử dụng một mẫu regex cho tất cả các quốc gia.
Tôi có thể sử dụng các số điện thoại được tạo ra trong ứng dụng sản xuất của mình không?
Chỉ sử dụng cho phát triển và kiểm tra. Không lưu trữ chúng như dữ liệu người dùng thực tế trong các cơ sở dữ liệu sản xuất. Dưới đây là lý do:
- Chúng có thể trùng ngẫu nhiên với các số được gán thực
- Chúng sẽ không nhận được mã xác minh hoặc cuộc gọi
- Người dùng sẽ bị nhầm lẫn nếu nhìn thấy các số này trong hồ sơ tài khoản của họ
Để kiểm tra sản xuất (như môi trường staging), hãy sử dụng các số kiểm tra chuyên dụng từ nhà cung cấp SMS hoặc thoại của bạn.
Xác thực số điện thoại hoạt động như thế nào?
Xác thực kiểm tra tính chính xác về mặt cấu trúc bằng các quy tắc riêng của từng quốc gia:
- Xác minh độ dài: Số điện thoại Hoa Kỳ phải có 10 chữ số, điện thoại di động Vương quốc Anh có 10-11 chữ số
- Kiểm tra tiền tố: Điện thoại di động Vương quốc Anh bắt đầu bằng 7, điện thoại di động Mexico sử dụng mã vùng cụ thể
- Khớp mẫu: Các mẫu regex đảm bảo nhóm và định dạng chính xác
Xác thực không làm: xác minh xem một số có đang hoạt động, xác định nhà mạng, hoặc kiểm tra xem nó có thể nhận tin nhắn không. Để làm điều đó, bạn cần các dịch vụ như Twilio's Lookup API hoặc tích hợp libphonenumber.
Công cụ này có lưu trữ hoặc lưu các số điện thoại được tạo ra của tôi không?
Không. Toàn bộ quá trình tạo diễn ra trong trình duyệt của bạn. Không có gì được gửi đến máy chủ hoặc lưu trữ ở đâu cả. Khi bạn tạo một số, nó chỉ tồn tại trong phiên hiện tại của bạn. Làm mới trang và nó sẽ biến mất.
Điều này làm cho công cụ an toàn để làm việc với dữ liệu kiểm tra trong các môi trường an toàn nơi bạn không thể gửi thông tin ra bên ngoài.
Làm thế nào để xác thực số điện thoại trong mã của riêng tôi?
Các ví dụ triển khai ở trên hiển thị các mẫu xác thực cho các ngôn ngữ khác nhau. Phương pháp cơ bản:
- Xác định các mẫu regex cho mỗi quốc gia bạn hỗ trợ
- Chuẩn hóa đầu vào (loại bỏ khoảng trắng, dấu ngoặc đơn, dấu gạch ngang)
- Kiểm tra xem số đã được làm sạch có khớp với các mẫu của bạn không
- Cân nhắc sử dụng libphonenumber cho sản xuất—nó xử lý các trường hợp biên tốt hơn regex tùy chỉnh
Sai lầm thường gặp: Xác thực định dạng nhưng không chuẩn hóa đầu vào trước. Người dùng nhập "+1 (555) 123-4567", "1-555-123-4567" và "15551234567" với mong đợi chúng sẽ hoạt động. Trình xác thực của bạn nên xử lý tất cả các biến thể.
Tài liệu tham khảo
-
Liên minh Viễn thông Quốc tế (ITU). "E.164: Kế hoạch Đánh số Viễn thông Công cộng Quốc tế." ITU
-
Ban Quản lý Kế hoạch Đánh số Bắc Mỹ. "Về Kế hoạch Đánh số Điện thoại Bắc Mỹ." NANPA
-
Ofcom (Vương quốc Anh). "Số điện thoại - Kế hoạch Đánh số Điện thoại Quốc gia." Ofcom
-
Bộ Viễn thông, Chính phủ Ấn Độ. "Kế hoạch Đánh số Quốc gia." DoT Ấn Độ
-
Viện Liên bang Viễn thông (Mexico). "Kế hoạch Đánh số Quốc gia." IFT Mexico
-
Thư viện libphonenumber của Google. "Phân tích, Định dạng và Xác thực Số Điện thoại." Kho GitHub
-
Hướng dẫn Đánh số Điện thoại Thế giới. "Mã Quốc tế và Thông tin Quay số." WTNG
Bắt Đầu Tạo Số Điện Thoại Thử Nghiệm
Bạn cần các số điện thoại hợp lệ cho phiên kiểm tra tiếp theo? Hãy chọn quốc gia của bạn, chọn di động hoặc điện thoại cố định, và tạo các số được định dạng chính xác theo các mẫu thực tế. Công cụ xử lý độ phức tạp của các tiêu chuẩn quốc tế trong khi vẫn giữ giao diện đơn giản - không cần tài khoản, không cần khóa API, chỉ có kết quả ngay lập tức.
Hoàn hảo cho các nhà phát triển kiểm tra logic xác thực, các nhóm QA điền môi trường thử nghiệm, hoặc bất kỳ ai cần các ví dụ số điện thoại thực tế.