Как рассчитать и проверить мобильный номер телефона

Узнайте, из чего состоит мобильный номер, как определить код страны и оператора, а также простые алгоритмы проверки цифр для любой страны.

В современном мире телефонный номер – это не просто набор цифр, а структурированный идентификатор, который позволяет определить страну, оператора связи и даже проверить корректность набора цифр. В этой статье мы подробно разберём, как «рассчитать» номер мобильного телефона: от его структуры до алгоритмов проверки.


Структура мобильного номера

Для большинства стран телефонный номер состоит из нескольких частей:

  1. Код страны (Country Code) – международный префикс, например +7 для России, +1 для США.
  2. Код оператора (Network Code) – в России это первые 3 цифры после кода страны (например, 915, 916, 917 и т.д.).
  3. Абонентская часть – оставшиеся цифры, которые уникальны для конкретного абонента.

Пример полного номера в России:

+7 (915) -23‑45‑67

Где:

  • +7 – код страны;
  • 915 – код оператора (МТС, Мегафон, Теле2 и т.п.);
  • 1234567 – уникальная абонентская часть.

Таблица популярных кодов операторов в России (2024 год)

Код оператора Оператор Тип услуги
910‑919 МТС мобильный
920‑929 Мегафон мобильный
930‑939 Билайн мобильный
950‑959 Теле2 мобильный
960‑969 МТС (новый диапазон) мобильный
970‑979 Мегафон (новый диапазон) мобильный

Как «рассчитать» номер: проверка корректности

Самый распространённый запрос «рассчитать номер» обычно означает проверку его валидности. Для этого используют два основных подхода:

Проверка длины и формата

  • Для России: 11 цифр без знаков (+7 считается 1 цифрой, а не 2).
  • Для международных номеров: длина может варьироваться от 8 до 15 цифр (включая код страны).

Алгоритм Luhn (модуль 10)

Во многих странах (в т.ч. в России) номера мобильных телефонов проверяются по алгоритму Луна. Он позволяет быстро обнаружить опечатки.


Шаги алгоритма Luhn:
Начиная с правой стороны, каждую вторую цифру умножаем на 2.
Если результат умножения > 9, вычитаем 9 (или складываем цифры результата).
Суммируем все полученные цифры.
Если итоговая сумма делится на 10 без остатка – номер корректен.

Пример проверки номера 79151234567 (без плюса и скобок):

  1. Разворачиваем: 7 9 1 5 1 2 3 4 5 6 7
  2. Умножаем каждую вторую цифру (начиная с правой) на 2:
    • 7 → 7
    • 6×2 = 12 → 1+2 = 3
    • 5 → 5
    • 4×2 = 8 → 8
    • 3 → 3
    • 2×2 = 4 → 4
    • 1 → 1
    • 5×2 = 10 → 1+0 = 1
    • 1 → 1
    • 9×2 = 18 → 1+8 = 9
    • 7 → 7
  3. Сумма: 7+9+1+1+1+4+3+8+5+3+7 = 50
  4. 50 делится на 10 → номер корректен.

Как «рассчитать» номер вручную (по коду страны и оператору)

Если вам нужно сгенерировать номер, который будет соответствовать реальному диапазону, следуйте этим шагам:

  1. Выберите код страны (например, +7 для России).
  2. Определите нужный код оператора (например, 915 – МТС).
  3. Сгенерируйте случайную абонентскую часть из 7 цифр. При этом желательно проверить её по алгоритму Luhn.

Пример генерации в JavaScript:


function generateRUPhone {
 const operatorCodes = ['910','911','912','913','914','915','916','917','918','919',
 '920','921','922','923','924','925','926','927','928','929', '930','931','932','933','934','935','936','937','938','939',
 '950','951','952','953','954','955','956','957','958','959',
 '960','961','962','963','964','965','966','967','968','969',
 '970','971','972','973','974','975','976','977','978','979'];
 const operator = operatorCodes[Math.floor(Math.randomoperatorCodes.length)];
 let subscriber = '';
 for (let i=0; i<7; i++) {
 subscriber += Math.floor(Math.random10);
 }
 const raw = '7' + operator + subscriber; // без плюса
 // проверка Luhn, если не проходит – генерируем заново
 if (!luhnCheck(raw)) return generateRUPhone;
 return `+7 (${operator}) ${subscriber.slice(0,3)}-${subscriber.slice(3,5)}-${subscriber.slice(5)}`;
}


// Алгоритм Luhn
function luhnCheck(num) {
 let sum = 0;
 let alt = false;
 for (let i = num.length ― 1; i >= 0; i--) {
 let n = parseInt(num.charAt(i), 10);
 if (alt) {
 n *= 2;
 if (n > 9) n -= 9;
 } sum += n;
 alt = !alt;
 }
 return sum % 10 === 0;
}

Онлайн‑инструменты для расчёта и проверки

Если писать код не хочется, можно воспользоваться готовыми сервисами:

  • PhoneValidator.io – проверка формата, страны и оператора.
  • NumValidate.com – поддержка Luhn‑проверки и генерации случайных номеров.
  • Google libphonenumber – открытая библиотека (Java, JavaScript, Python) для работы с телефонными номерами любой страны.

Часто задаваемые вопросы (FAQ)

Можно ли использовать любой набор цифр после кода страны?

Нет. После кода страны следует диапазон, закреплённый за конкретным оператором. Использование «неразрешённого» кода может привести к тому, что номер будет считаться недействительным.

Что делать, если номер не проходит проверку Luhn?

Проверьте:

  • правильность ввода (нет лишних пробелов, скобок, тире);
  • корректность длины (для России – 11 цифр);
  • соответствие кода оператора известному диапазону.

Как узнать, к какому оператору относится номер?

Существует несколько баз данных, например OpenCellID или NumLookup. Вводите номер, и сервис покажет оператор и даже регион (если номер привязан к конкретному городу).

Можно ли «перехитрить» проверку и использовать несуществующий номер?

Теоретически можно сгенерировать любой набор цифр, но большинство сервисов (социальные сети, банковские приложения) используют многоуровневую проверку: Luhn → проверка диапазона → запрос в базу операторов. Поэтому «фальшивый» номер почти наверняка будет отклонён.

Расчёт (проверка) номера мобильного телефона – это комбинация простых правил:

  • знать структуру номера (код страны + код оператора + абонентская часть);
  • проверять длину и формат;
  • использовать алгоритм Luhn для обнаружения опечаток;
  • при генерации учитывать диапазоны операторов.

Следуя этим рекомендациям, вы сможете быстро убедиться в корректности любого телефонного номера, а также безопасно генерировать новые номера для тестовых целей.


Статья написана в 2024 году, актуальна на 2026 год. Для самых свежих диапазонов операторов рекомендуется проверять официальные источники операторов или использовать библиотеку libphonenumber;