Перейти до вмісту

Генератор і Валідатор Телефонних Номерів - Тестові Номери для Будь-Якої Країни

Генеруйте дійсні тестові телефонні номери для США, Великобританії, Мексики, Індії. Створюйте мобільні або стаціонарні номери з правильним форматуванням. Безкоштовний інструмент для розробників, які тестують логіку перевірки.

Генератор і Валідатор Телефонних Номерів

Калькулятор завантаження...
📚

Документація

Чому важливе генерування телефонних номерів

Тестування логіки перевірки телефонних номерів може бути складним. Вам потрібні реалістичні номери, які відповідають специфічним шаблонам країн, але manually створення тестових даних є громіздким і схильним до помилок. Цей інструмент вирішує цю проблему, генеруючи структурно коректні телефонні номери для багатьох країн — з правильними кодами регіонів, мобільними префіксами та форматуванням.

Незалежно від того, чи створюєте ви контактну форму, тестуєте SMS API або наповнюєте базу даних розробки, ви отримаєте номери, які відповідають реальним форматам. Інструмент обробляє складність міжнародних стандартів (як E.164), зберігаючи простий інтерфейс: виберіть країну, оберіть мобільний або стаціонарний номер і згенеруйте.

Що робить цей інструмент відмінним від генераторів випадкових цифр? Він поважає правила. Мобільні номери Мексики мають правильні кодові регіони (55 для Мехіко, 33 для Гвадалахари). Американські номери уникають неправильних шаблонів, як-от початок кодів регіонів з 0 або 1. Британські мобільні номери починаються з 7. Ці деталі мають значення, коли ви тестуєте логіку перевірки, з якою зіткнуться користувачі в робочому середовищі.

Як працює генератор телефонних номерів

За простим інтерфейсом генератор застосовує специфічні для країни правила для створення дійсних телефонних номерів:

  1. Вибір країни та регіону: Оберіть цільову країну та регіон. Це визначає код міста — наприклад, вибравши "CDMX" в Мексиці, автоматично використовується код міста 55.

  2. Логіка типів номерів: Мобільні та стаціонарні номери мають різні шаблони. У Великобританії мобільні починаються з 7, а стаціонарні використовують географічні коди, як 20 для Лондона. Інструмент застосовує правильний префікс відповідно до вашого вибору.

  3. Генерація випадкових цифр: Для абонентських номерів інструмент генерує випадкові цифри в межах дійсних діапазонів. Не всі цифри працюють скрізь — коди США не можуть починатися з 0 або 1, і деякі коди зарезервовані для служб.

  4. Застосування формату: Номери форматуються відповідно до стандартів E.164 (міжнародний) або місцевих угод. Мексиканські номери відображаються як "+52 55 1234 5678" міжнародному форматі або "55 1234 5678" локально.

  5. Перевірка: Кожен згенерований номер перевіряється за regex-шаблонами, специфічними для цієї країни. Це дозволяє виявити структурні помилки перед відображенням номера.

Чого ви не побачите: Інструмент навмисно уникає екстрених номерів (як 911), тестових діапазонів та спеціальних сервісних кодів. Це робить вихідні дані безпечнішими для тестових середовищ, де ви не хочете випадково активувати реальні служби.

Формула та алгоритми

Хоча генерація телефонних номерів може здаватися простим випадковим процесом, правильна її реалізація вимагає розуміння математичних обмежень і закономірностей, які роблять телефонні номери дійсними в різних регіонах.

Алгоритм генерації випадкових номерів

Базовий алгоритм генерації дійсного телефонного номера дотримується такої формули:

N=C+A+P+SN = C + A + P + S

Де:

  • NN - повний телефонний номер
  • CC - код країни (необов'язково для локального формату)
  • AA - код області/регіону
  • PP - префікс (який може мати обмеження залежно від типу номера)
  • SS - номер абонента (випадкові цифри)

Алгоритм перевірки

Перевірка телефонних номерів може бути виражена як операція зіставлення з регулярним виразом, яку можна математично представити так:

undefined
1// Приклад 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
34

Python

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
34

Java

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}
40

PHP

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?>
37

C#

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

Тестування SMS або голосових API вимагає телефонних номерів, але не можна використовувати реальні дані клієнтів у розробці. Провайдери послуг, як-от Twilio, пропонують тестові номери, але вони обмежені. Для всебічного тестування - особливо обмеження швидкості, пакетної обробки та обробки помилок - потрібен великий обсяг.

Поширена помилка: тестування лише власного номера телефону. Це не виявить проблем з різними форматами або міжнародними номерами. Згенеруйте набір номерів, що відповідають цільовим ринкам, і ви виявите помилки форматування до виходу в продакшн.

Навчальні та демонстраційні середовища

Під час навчання персоналу в CRM-системах або демонстрації програмного забезпечення клієнтам потрібні дані, які виглядають реально, не розкриваючи фактичної інформації про клієнтів. Випадкові номери на кшталт "1234567890" виглядають штучно та підривають довіру.

Те, що я знайшов корисним: генеруйте повні тестові набори даних з реалістичними іменами, адресами та правильно відформатованими телефонними номерами для регіонів, які ви демонструєте. Це робить навчання більш ефективним, оскільки воно відображає те, що користувачі побачать у виробничому середовищі.

Порівняння з альтернативними рішеннями

Бібліотека Google libphonenumber

Для перевірки в робочому середовищі Google's libphonenumber є золотим стандартом. Він обробляє понад 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', а в Мексиці мобільні номери зберігали той самий формат, що й стаціонарні, але з різними кодами регіонів.

Сучасні стандарти та ера VoIP (2000-ні - дотепер)

З появою Voice over IP (VoIP) та інтернет-комунікацій формати телефонних номерів стали більш гнучкими. Стандарт E.164 було адаптовано для підтримки цих нових технологій, і багато країн переглянули свої плани нумерації для створення більшої ємності.

Запровадження перенесення номерів у багатьох країнах ще більше розмило відмінності між мобільними та стаціонарними номерами, оскільки користувачі тепер можуть зберігати свої номери при переході між типами послуг.

Сьогодні формати телефонних номерів продовжують еволюціонувати, і деякі країни розглядають можливість скасування кодів регіонів або інтеграції телефонних номерів з цифровими ідентичностями. Однак базова структура, встановлена E.164, залишається фундаментом глобальної телекомунікаційної нумерації.

Часті запитання

Як згенерувати випадковий номер телефону для тестування?

Виберіть цільову країну та регіон з випадаючих списків, увімкніть перемикач для мобільного або стаціонарного формату та натисніть "Згенерувати номер телефону". Інструмент створює структурно правильний номер відповідно до правил форматування країни. Ви можете перемикатися між міжнародним форматом (з кодом країни) та локальним форматом.

Для тестування різних сценаріїв згенеруйте кілька номерів з різними налаштуваннями — це допоможе виявити помилки перевірки, які з'являються лише з певними форматами.

Чи є ці номери реальними, за якими можна здійснювати дзвінки або надсилати SMS?

Ні. Згенеровані номери відповідають правильним шаблонам форматування, але є випадковими і не призначені жодному абоненту. Вони призначені для тестування логіки перевірки, заповнення баз даних та демонстрації програмного забезпечення, а не для реальних телекомунікацій.

Важливо: Ніколи не намагайтеся здійснювати реальні дзвінки або надсилати SMS на ці номери. Вони можуть належати реальним людям або бути незакріпленими.

У чому різниця між міжнародним та локальним форматом номера телефону?

Міжнародний формат включає код країни з плюсом: +52 55 1234 5678 (Мексика). Це стандарт E.164, що використовується в глобальних телекомунікаціях.

Локальний формат показує, як набирати номер всередині країни: 55 1234 5678 (Мексика). Він не містить кodu країни, оскільки для внутрішніх дзвінків він не потрібен.

При тестуванні додатків для міжнародних користувачів перевіряйте обидва формати. Користувачі вводять номери непослідовно — деякі вставляють "+1 555...", інші друкують "(555)...". Надійний валідатор обробляє обидва варіанти.

Чому різні країни мають різні формати номерів телефонів?

Кожна країна розробила свій план нумерації незалежно, під впливом чисельності населення, географічних поділів та часу побудови телефонної інфраструктури. США прийняли Північноамериканський план нумерації у 1947 році з pattern 3-3-4 цифри. У Великобританії використовуються географічні коди змінної довжини. Індія стандартизувала 10-значні мобільні номери, щоб забезпечити потреби величезного населення.

Стандарт E.164 Міжнародного телекомунікаційного союзу надає структуру, але країни впроваджують її по-різному відповідно до своїх потреб. Саме тому перевірка телефонних номерів складна — не можна використовувати один regex-pattern для всіх країн.

Чи можу я використовувати згенеровані номери телефонів у моїй робочій програмі?

Використовуйте їх лише для розробки та тестування. Не зберігайте їх як реальні дані користувачів у робочих базах даних. Ось чому:

  • Вони можуть випадково збігатися з реально призначеними номерами
  • Вони не отримають коди підтвердження або дзвінки
  • Користувачі будуть спантеличені, якщо побачать ці номери у профілях своїх облікових записів

Для тестування в робочому середовищі використовуйте спеціальні тестові номери від вашого провайдера SMS або голосового зв'язку.

Як працює перевірка номерів телефонів?

Перевірка перевіряє структурну правильність за допомогою правил конкретної країни:

  1. Перевірка довжини: Номери США мають бути 10 цифр, мобільні номери у Великобританії — 10-11 цифр
  2. Перевірка префіксів: Мобільні номери у Великобританії починаються з 7, мексиканські мобільні використовують специфічні регіональні коди
  3. Зіставлення pattern: Regex-pattern забезпечує правильне групування та формат

Перевірка не робить: перевірку, чи номер зараз активний, визначення оператора або перевірку можливості отримання повідомлень. Для цього потрібні служби на кшталт Twilio Lookup API або інтеграція libphonenumber.

Чи зберігає цей інструмент або зберігає мої згенеровані номери телефонів?

Ні. Уся генерація відбувається у вашому браузері. Нічого не надсилається на сервер і ніде не зберігається. Коли ви генеруєте номер, він існує лише в поточній сесії. Оновіть сторінку — і він зникне.

Це робить інструмент безпечним для роботи з тестовими даними в захищених середовищах, де не можна надсилати інформацію назовні.

Як перевірити номери телефонів у моєму власному коді?

Приклади реалізації вище показують pattern перевірки для різних мов. Базовий підхід:

  1. Визначте regex-pattern для кожної підтримуваної країни
  2. Нормалізуйте введення (видаліть пробіли, дужки, дефіси)
  3. Перевірте, чи відповідає очищений номер вашим pattern
  4. Розгляньте використання libphonenumber для робочого середовища — він краще обробляє крайні випадки, ніж власний regex

Поширена помилка: Перевірка формату без попередньої нормалізації введення. Користувачі вводять "+1 (555) 123-4567", "1-555-123-4567" та "15551234567", очікуючи, що все спрацює. Ваш валідатор повинен обробляти всі варіанти.

Посилання

  1. Міжнародний союз електрозв'язку (МСЕ). "E.164: Міжнародний план нумерації телекомунікацій." МСЕ

  2. Адміністрація нумераційного плану Північної Америки. "Про Нумераційний план Північної Америки." NANPA

  3. Ofcom (Великобританія). "Телефонні номери - Національний план нумерації телефонів." Ofcom

  4. Департамент телекомунікацій, Уряд Індії. "Національний план нумерації." DoT Індія

  5. Федеральний інститут телекомунікацій (Мексика). "Національний план нумерації." IFT Мексика

  6. Бібліотека libphonenumber від Google. "Парсинг, форматування та перевірка телефонних номерів." Репозиторій GitHub

  7. Світовий довідник телефонних номерів. "Міжнародні телефонні коди та інформація." WTNG

Почніть генерувати тестові телефонні номери

Потрібні дійсні телефонні номери для вашої наступної тестової сесії? Виберіть країну, оберіть мобільний або стаціонарний телефон і згенеруйте правильно відформатовані номери, які відповідають реальним шаблонам. Інструмент обробляє складність міжнародних стандартів, зберігаючи простий інтерфейс — без облікових записів, без API-ключів, лише миттєві результати.

Ідеально підходить для розробників, які перевіряють логіку валідації, команд контролю якості, що заповнюють тестові середовища, або будь-кого, кому потрібні реалістичні приклади телефонних номерів.