@jack3d

Как сделать replace в javascript по маске?

Есть phone mask: +39(999)999-99-99. Формат может меняться. Как мне в такую маску подставить телефонный номер? Например, номер: 39091111111
  • Вопрос задан
  • 2147 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Faliah
Понятно, что совершенно универсальное выражение написать невозможно :) Но примерно так можно это сделать для такого формата и номеров с различной длиной кода (+7, +34, да сколько угодно в общем-то):

Написано на ES6, но изменения для ES5 минимальны

"use strict";

const number = "39091111111"; //тут неотформатированное значение
const pattern = new RegExp(`(^\\d{${number.length % 10}})(\\d{3})(\\d{3})(\\d{2})(\\d{2}$)`);
const formattedNumber = number.replace(pattern, '+$1($2)$3-$4-$5');
console.log(formattedNumber); //выведет +3(909)111-11-11
Ответ написан
Комментировать
keslo
@keslo
Регулярное выражение для валидации номера телефона:
^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$

Возможно вам поможет. Ориентировано на российские мобильные + городские с кодом из 3 цифр (например, Москва).
Можете взять за основу и допилить для своих целей.
Источник
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
учить регулярки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы