Секретарь-человек

Формат номера телефона

Введите номер как угодно — получите все правильные записи для визитки, сайта, CRM и ссылок. Ниже — массовое форматирование списка, маска телефона для сайта и регулярные выражения.

Без регистрации. Всё, что вы вводите, остаётся в браузере и на сервер не отправляется.

Любой вид: со скобками, пробелами, 8 или +7; иностранный — с плюсом и кодом страны.

Привести список номеров к одному формату

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

ГдеЗаписьПочему
Визитка, вывеска, реклама+7 916 123 45 67Рекомендация ITU-T E.123: плюс, код страны, группы через пробел; скобки в международной записи стандарт не допускает
Сайт, подпись письма+7 (916) 123-45-67Привычная в России запись: легко читается и диктуется; на сайте оберните её в ссылку tel:+79161234567
CRM, база, рассылки, API+79161234567Формат E.164: одна запись на номер, без пробелов — поиск, дедупликация и интеграции работают без ошибок
Только для звонков внутри России8 (916) 123-45-67Национальная запись: с иностранной SIM, из роуминга и в мессенджерах восьмёрка не сработает

Российский номер — это +7, трёхзначный код и семь цифр. Код 9XX — мобильный, 3XX, 4XX и 8XX — городской (кроме федеральных 8-800 и платных 8-803…8-809), коды на 6 и 7 после +7 — Казахстан. Узнать регион и оператора по коду — в определителе, город — в кодах городов, страну — в кодах стран.

Маска телефона для сайта

Попробуйте — так будет работать поле на вашем сайте с кодом ниже:

Без библиотек (JavaScript)

// Маска +7 (XXX) XXX-XX-XX без библиотек: для всех полей type="tel"
document.querySelectorAll('input[type="tel"]').forEach(input => {
  input.addEventListener('input', () => {
    let d = input.value.replace(/\D/g, '');
    if (d[0] === '8') d = '7' + d.slice(1);   // 8 916… → +7 916…
    if (d && d[0] !== '7') d = '7' + d;       // 916… → +7 916…
    d = d.slice(0, 11);
    const [a, b, c, e] = [d.slice(1, 4), d.slice(4, 7), d.slice(7, 9), d.slice(9, 11)];
    input.value = !d ? '' : '+7' + (a && ' (' + a) + (b && ') ' + b) + (c && '-' + c) + (e && '-' + e);
  });
});

Поле формы (HTML)

<input type="tel" name="phone" autocomplete="tel" inputmode="tel"
       placeholder="+7 (900) 000-00-00"
       pattern="\+7 \(\d{3}\) \d{3}-\d{2}-\d{2}" required>

autocomplete="tel" позволяет браузеру подставить номер владельца, pattern проверяет формат при отправке (атрибут неявно привязан к началу и концу строки, ^ и $ не нужны). Маска переставляет курсор в конец при правке в середине — для полей номера это обычно не мешает.

С библиотеками

БиблиотекаКод
IMaskIMask(input, { mask: '+{7} (000) 000-00-00' })
InputmaskInputmask('+7 (999) 999-99-99').mask(input)
Cleave.js (снят с поддержки)new Cleave(input, { prefix: '+7', blocks: [2, 3, 3, 2, 2], delimiters: [' (', ') ', '-', '-'], numericOnly: true })

Регулярное выражение для номера телефона

Что проверяетРегулярное выражение
Нормализованный российский номер (E.164)
Для базы и CRM: строго +7 и 10 цифр.
^\+7\d{10}$
Любой ввод российского номера
Принимает 8 и +7, скобки, пробелы и дефисы.
^(?:\+7|7|8)[\s(-]*\d{3}[\s)-]*\d{3}[\s-]*\d{2}[\s-]*\d{2}$
Российский мобильный
То же, но код начинается с 9.
^(?:\+7|7|8)[\s(-]*9\d{2}[\s)-]*\d{3}[\s-]*\d{2}[\s-]*\d{2}$
Любой международный номер (E.164)
Плюс и от 8 до 15 цифр вместе с кодом страны.
^\+[1-9]\d{7,14}$

    Регулярное выражение отвечает только на вопрос «похоже ли на номер», но не «существует ли он». Для форм надёжнее сначала очистить ввод до цифр и привести к +7, а уже потом проверять длину и код — тогда клиент может написать номер как привык, а в базу попадёт единый формат.

    Нужна кликабельная ссылка или QR-код с номером — генератор ссылок wa.me, t.me и tel:. А чтобы ни один звонок по этому номеру не потерялся, подключите Машу.

    Вопросы и ответы

    Как правильно писать номер телефона?
    Для печати и сайта — в международном виде: +7 916 123 45 67 (рекомендация ITU-T E.123: плюс, код страны, группы через пробел) или привычное в России +7 (916) 123-45-67. Для базы, CRM и рассылок — без пробелов: +79161234567 (формат E.164). Запись 8 (916) 123-45-67 — национальная: из-за границы по ней не дозвониться.
    +7 или 8 — как лучше?
    +7. Такой номер набирается и из России, и из-за границы, правильно распознаётся телефоном, мессенджерами и ссылками tel: и wa.me. Восьмёрка — междугородний префикс внутри страны: из роуминга, с иностранной SIM и в WhatsApp с ней не дозвониться.
    Что такое международный формат номера?
    Номер с плюсом и кодом страны, без внутренних префиксов: +7 916 123-45-67 вместо 8 916 123-45-67, +44 20 7946 0958 вместо 020 7946 0958. В «машинном» варианте E.164 — без пробелов и знаков: +79161234567, всего не больше 15 цифр.
    Как поставить маску телефона на сайт?
    Скопируйте готовый код маски выше — он работает без библиотек со всеми полями type="tel" — или подключите IMask или Inputmask с маской +7 (000) 000-00-00. Дополнительно задайте атрибут pattern для проверки при отправке формы и autocomplete="tel", чтобы браузер подставлял номер сам.
    Какое регулярное выражение для номера телефона?
    Для уже нормализованного российского номера — ^\+7\d{10}$. Для того, что вводят люди (8, +7, скобки, пробелы, дефисы), — второе выражение из таблицы. Надёжнее всего не проверять ввод регуляркой, а сначала убрать всё, кроме цифр, привести 8 к 7 и проверить длину — так делает этот инструмент.
    Как привести список номеров к одному формату?
    Вставьте список в массовый режим — по одному номеру в строке, в любом виде. Выберите формат, включите удаление дублей и скачайте CSV для Excel или скопируйте результат. Строки, которые не похожи на номер, будут отмечены.
    Номера уходят на сервер?
    Нет. Форматирование работает в браузере. Только для мобильного номера при показе оператора страница один раз скачивает открытый реестр нумерации Минцифры — сам номер никуда не отправляется.

    Номер на визитке и сайте правильный. А кто на него ответит?

    Когда вы заняты, Маша возьмёт трубку, выяснит, кто и зачем звонит, и пришлёт расшифровку в Telegram — клиент не уйдёт к конкуренту.