# Проверка соответствия стандарту E.164 и номера телефона: форматирование, нормализация MSISDN и почему это важно для доставки

> E.164 — это формат, в котором должен храниться каждый телефонный номер. Как работает нормализация MSISDN, как проверять номера и почему неправильное форматирование приводит к сбою доставки.

- Канонический URL: https://www.broadnet.me/ru/blog/e164-phone-number-validation-msisdn
- Язык: ru
- Последнее обновление: 2026-10-20
- Издатель: BroadNet (https://www.broadnet.me)

- Опубликовано: 2026-08-03
- Автор: BroadNet Editorial Team

E.164 — это стандарт ITU-T для записи телефонных номеров для международного использования: знак плюс в начале, код страны от одной до трех цифр и национальный номер без разделителей, содержащий не более 15 цифр. Хранение каждого номера в этой канонической форме — MSISDN, к которому обращается сеть, — обеспечивает возможность проверки и надежной доставки.

> Хотите преобразовать номер прямо сейчас? Вставьте его в [форматировщик телефонных номеров](https://www.broadnet.me/tools/phone-number-formatter), чтобы увидеть его формат E.164, или пропустите весь список через [валидатор списков номеров](https://www.broadnet.me/tools/number-list-validator). В этом руководстве объясняется, как работают эти инструменты.

## Что такое E.164: международная система нумерации.

E.164 — это рекомендация ITU-T E.164, международная система нумерации телекоммуникаций. Она присваивает каждому телефону на планете единый, уникальный в глобальном масштабе адрес, позволяющий маршрутизировать вызов или сообщение из любой сети в любую другую. Номер E.164 состоит из трех частей: кода страны (CC) от одной до трех цифр, национального кода назначения (NDC, часто это код оператора или города) и номера абонента. В совокупности они не должны превышать 15 цифр.

Каноническая строка начинается с символа '+', за которым следуют только цифры — например, +971500000000. Символ '+' служит заполнителем для международного префикса доступа, используемого исходной сетью (00 в большинстве стран мира, 011 в Северной Америке); хранение символа '+' вместо префикса, специфичного для страны, именно это обеспечивает переносимость номера между сетями и странами. В номере E.164 нет пробелов, тире, скобок или нулей в начале: это правила отображения, а не часть номера.

## MSISDN: номер, на который фактически маршрутизируется сеть.

MSISDN расшифровывается как Mobile Station International Subscriber Directory Number (Международный номер абонента мобильной станции) — это набираемый номер E.164, идентифицирующий абонента мобильной связи. Именно его вы сохраняете, набираете и отправляете SMS. Он намеренно отделен от IMSI, идентификатора, хранящегося на SIM-карте в соответствии с ITU-T E.212 (код страны мобильной связи плюс код мобильной сети плюс идентификатор абонента). Регистр домашнего местоположения оператора сопоставляет MSISDN с его текущим IMSI и обслуживаемой сетью, благодаря чему сообщение, адресованное номеру E.164, достигает нужного телефона даже после того, как абонент переходит в роуминг или меняет номер.

Практический вывод: MSISDN — это просто номер E.164 для мобильной линии. Когда говорят «нормализовать до MSISDN», имеют в виду «сохранить номер мобильной линии в каноническом формате E.164». Правильное представление этого номера в точке захвата — это разница между номером, который корректно маршрутизируется, и номером, который незаметно выходит из строя на последующих этапах.

## Нормализация: хранение каждого числа в одной канонической форме.

Пользователи вводят номера всеми возможными способами — с пробелами, скобками, национальным номером ноль, международным префиксом 00 или 011 или без него. Нормализация объединяет все эти варианты в одну каноническую строку E.164, так что одна и та же физическая строка всегда хранится идентично. Без нее невозможно удалить дубликаты из списка контактов, сопоставить номер со списком запрещенных номеров или надежно проверить номер перед отправкой.

Надежный нормализатор применяет эти правила в указанном порядке:

- Удалите все символы форматирования: пробелы, тире, точки и скобки.
- Преобразовать международный префикс доступа — ведущий символ 00 (ITU) или 011 (Северная Америка) — в знак '+'.
- Если номер уже начинается с символа '+', оставьте код страны как есть.
- Если используется национальный формат (без кода страны), удалите национальный префикс (обычно это один ведущий ноль) и добавьте в начало код страны региона по умолчанию.
- Отклоняйте все, что не является знаком '+', за которым следуют цифры от 1 до 15, причем первая цифра должна быть от 1 до 9.
- Сохраняйте только знак «+» и цифры; при отображении числа автоматически восстанавливайте красивые формы отображения.

Этап "нулевого канала" — вот что чаще всего ставит в тупик команды. В большинстве стран начальный 0, который вы набираете внутри страны, является префиксом канала, который отбрасывается в международном формате — мобильный номер ОАЭ, записанный как 050 000 0000, становится +971 50 000 0000, а не +971 050…. Применение кода страны без удаления этого 0 приводит к недействительному номеру, который выглядит правдоподобно. Нормализатор должен знать регион по умолчанию, чтобы обрабатывать ввод в национальном формате; одни и те же цифры означают разные линии в разных странах.

```
function toE164(raw, defaultRegion) {

// 1. Удаляем пробелы, тире, точки, скобки

let s = raw.trim().replace(/[\s().\-]/g, '');

// 2. Международный префикс 00 (ITU) или 011 (NANP) -> +

s = s.replace(/^(00|011)/, '+');

// 3. Уже в международном формате? Сохраняем код страны

if (s.startsWith('+')) return assertE164(s);

// 4. Национальный формат: удаляем основной код 0, добавляем код региона

s = s.replace(/^0/, '');

return assertE164('+' + defaultRegion.dialCode + s);

}

// assertE164 принимает только /^\+[1-9]\d{1,14}$/ (плюс, тогда <= 15 цифр)
```

Здесь та же логика применяется к реальным примерам из стран Персидского залива и других стран мира. Обратите внимание, как различные входные данные сводятся к одному чистому MSISDN:

| Код страны) | Ввод текста по мере его ввода. | Канонический E.164 (MSISDN) |
|---|---|---|
| ОАЭ (+971) | 050 000 0000 / 00971 50 000 0000 | +971500000000 |
| Саудовская Аравия (+966) | 0500000000 | +966500000000 |
| Египет (+20) | 0100 123 4567 | +201001234567 |
| Соединенное Королевство (+44) | (07911) 123 456 | +447911123456 |
| Соединенные Штаты (+1) | 011 1 202 555 0143 | +12025550143 |

Для разовых проверок [форматировщик телефонных номеров](https://www.broadnet.me/tools/phone-number-formatter) отображает национальные и международные форматы отображения номера вместе с его выводом в формате E.164; для очистки всей загруженной базы данных перед началом кампании [валидатор списка номеров](https://www.broadnet.me/tools/number-list-validator) нормализует, удаляет дубликаты и помечает недопустимые строки в браузере, чтобы исходные данные никогда не покидали ваш компьютер.

## Синтаксическая корректность не означает достижимость.

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

Для подтверждения реальной доступности необходимо запросить базу данных абонентов оператора. Поиск по HLR (/products/hlr-lookup) возвращает информацию о том, назначен ли номер в данный момент и активен ли он, его истинную домашнюю сеть (MCC/MNC, стоящий за любым перенесенным номером) и его роуминговый статус — истинные данные, которые невозможно получить только с помощью синтаксиса. Разумный алгоритм действий: сначала нормализовать до E.164, быстро удалить синтаксически некорректные строки, а затем выполнить поиск по HLR для оставшихся номеров перед отправкой большого или ценного номера.

## Почему ошибки форматирования приводят к потере доставленных сообщений и денег

A2P SMS оплачивается за сегмент при отправке, а не при доставке. Неправильно сформированный номер — это сообщение, за попытку доставки которого вы платите, но которое так и не доходит, а при больших объемах рассылки такие сбои накапливаются. Плохое форматирование также маскирует дубликаты (одна и та же строка, сохраненная тремя разными способами, оплачивается трижды), искажает показатели скорости доставки и может вызывать срабатывание фильтров оператора, когда шлюз получает номера, которые он не может обработать.

Самое простое решение полностью находится на вашей стороне API: нормализация в точке захвата, проверка формы E.164 перед постановкой в очередь и резервирование поиска HLR для номеров, которые прошли проверку. Команды, внедряющие это в свой собственный стек, могут один раз подключить это к API обмена сообщениями — см. [документацию для разработчиков](https://www.broadnet.me/developers) — так что каждый номер будет каноническим до того, как за него будет взиматься плата. Обработка национальных и международных номеров также не является исключением в регионе MENA: отправители из стран Персидского залива регулярно получают номера ОАЭ, Саудовской Аравии и Египта в локальном формате, и для каждого из них требуется собственное правило префикса транка для корректной нормализации.

> Чистые входящие номера, доставленные исходящие сообщения. Нормализуйте и проверьте каждый номер с помощью [форматировщика телефонных номеров](https://www.broadnet.me/tools/phone-number-formatter), затем подтвердите работоспособность номеров с помощью [поиска HLR](https://www.broadnet.me/products/hlr-lookup) перед отправкой. С 2003 года BroadNet обеспечивает маршрутизацию многоканального трафика в 200+ стран через 1000+ операторских соединений, с уровнем обслуживания платформы 99,99%.

## Часто задаваемые вопросы

### Что такое формат E.164?

E.164 — это международный стандарт нумерации телефонных номеров, разработанный ITU-T. Номер в формате E.164 состоит из знака «+» в начале, кода страны от одной до трех цифр и национального номера, записанного только цифрами без пробелов и разделителей, максимум 15 цифр — например, +971500000000. Это каноническая форма для хранения любого телефонного номера, позволяющая осуществлять международную маршрутизацию.

### Как подтвердить международный номер телефона?

Проверка в два этапа. Первый — синтаксический: нормализуйте входные данные в формате E.164 (удалите форматирование, преобразуйте префиксы 00/011 в '+', удалите все национальные нулевые символы, добавьте код страны) и подтвердите, что это '+', за которым следуют от 1 до 15 цифр. Второй — доступность: выполните поиск HLR, чтобы подтвердить, что номер действительно назначен и активен. Одна только синтаксическая корректность не доказывает, что номер может принимать сообщения.

### Что такое нормализация MSISDN?

Нормализация MSISDN — это процесс преобразования номера мобильного телефона, записанного в любом локальном или отформатированном стиле, в его канонический MSISDN в формате E.164 — набираемый международный номер, на который маршрутизируется сеть. При этом удаляются разделители, определяется префикс транка и префикс международного доступа, а также применяется правильный код страны, поэтому одна и та же строка всегда хранится идентично для дедупликации, проверки и надежной доставки.

## Ссылки

- Рекомендация ITU-T E.164 — международный план нумерации общественных телекоммуникаций: [itu.int](https://www.itu.int/rec/T-REC-E.164/)
- Рекомендация ITU-T E.212 — международный план идентификации для общедоступных сетей и подписок (IMSI, MCC/MNC): [itu.int](https://www.itu.int/rec/T-REC-E.212/)
- BroadNet — [форматировщик телефонных номеров](https://www.broadnet.me/tools/phone-number-formatter) и [валидатор списка номеров](https://www.broadnet.me/tools/number-list-validator) для нормализации E.164.
- BroadNet — [HLR lookup](https://www.broadnet.me/products/hlr-lookup) для подтверждения истинной достижимости, выходящей за рамки синтаксической корректности.
