Войти Регистрация
Фронтенд

58. Номер телефона в виде +7 916 123-45-67 в кабинете МТС

Лёгкая

В личном кабинете МТС номер для пополнения вставляют откуда угодно: из контактов «8 (916) 123-45-67», из мессенджера «+7 916 1234567», из таблицы «79161234567». В истории платежей он должен выглядеть одинаково.

Напишите formatPhone(input). Из строки берутся только цифры; пробелы, скобки, дефисы, точки и ведущий + игнорируются. Подходят 11 цифр, начинающихся на 7 или 8, и 10 цифр без кода страны.

Номер без кода страны — 10 цифр. Российские коды начинаются с 3, 4, 8 или 9; если первая из 10 цифр другая, верните null. Результат — +7 XXX XXX-XX-XX.

Буквы в строке означают ошибку ввода — null. Пустая строка и строка без цифр — тоже null.

В работе: В истории пополнений один номер записан пятью способами, и группировка «кому платили чаще» его не узнаёт.

Пример 1: восьмёрка и скобки

Аргументы теста
"8 (916) 123-45-67"
Ожидается
"+7 916 123-45-67"

Пример 2: слитно с плюсом

Аргументы теста
"+79161234567"
Ожидается
"+7 916 123-45-67"
Как проверяем Объявите formatPhone — тест вызывает её сам. Таймеры и Date в тестах ненастоящие: время идёт по команде теста, поэтому setTimeout на 5 секунд проверяется мгновенно. Тестов 12: 2 открыты выше, остальные приходят после старта подхода. Лимит — 2 с на тест.
function formatPhone(input) // → string | null
строкирегулярные выраженияформатирование

Источник: на задачах МТС: номера в личном кабинете и переводах. Условие пересказано своими словами.