В личном кабинете МТС номер для пополнения вставляют откуда угодно: из контактов «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
Источник: на задачах МТС: номера в личном кабинете и переводах. Условие пересказано своими словами.
Ожидаемый ответ не нужен: покажем, что вернула функция.
Здесь появится результат отправки.