Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Варианты форматирования номера телефона (https://javascript.ru/forum/misc/70009-varianty-formatirovaniya-nomera-telefona.html)

AlexTrader 03.08.2017 10:31

Это template ячейки грида, возможно сюда прикрутить маску?

laimas 03.08.2017 11:10

AlexTrader,
разбейте строку рег. выражением начиная справа по две цифры, кроме крайней слева, где одна. Первая слева и две следующие справа по правилу 0 или 1/2 соответственно. Останется проверить у этого среза массива (с первого) чему равен первый его элемент (пусто или номер) и сформировать.

AlexTrader 03.08.2017 12:03

Цитата:

Сообщение от laimas (Сообщение 460494)
AlexTrader,
разбейте строку рег. выражением начиная справа по две цифры, кроме крайней слева, где одна. Первая слева и две следующие справа по правилу 0 или 1/2 соответственно. Останется проверить у этого среза массива (с первого) чему равен первый его элемент (пусто или номер) и сформировать.

Нельзя ли немного подробнее для особо "одарённых"?))

laimas 03.08.2017 12:17

function formatPhone(phone) {
    phone = phone.match(/(\d{0,1})(\d{0,2})(\d{0,2})(\d{2})(\d{2})(\d{2})$/).slice(1);
    return (phone[0] ? '+7(' + phone.slice(1,3).join('') + ')' : '') + phone.slice(-3).join('-')
}


Если какие-то еще проверки нужны, добавить, иначе срез можно брать начиная и со второго элемента, так как все равно всегда с +7.

AlexTrader 03.08.2017 14:20

laimas, но телефоны разные приходят: 89278654321, 88443454545, 454545, а на выходе нужно: +7(927)865-43-21, +7(8443)45-45-45, +7(8443)45-45-45 (если не указан код города то по умолчанию ставим 8443)

laimas 03.08.2017 15:00

Цитата:

Сообщение от AlexTrader
а на выходе нужно: +7(927)865-43-21, +7(8443)45-45-45, +7(8443)45-45-45

Так проверяйте, кто же вам запрещает. Может вместо номера вообще прийти непотребное, это ведь тоже надо проверять, по крайней мере первая строка должны быть такой:

if(!(phone = phone.replace(/\D/g, '')).length) {
    alert('Error');
    return
}


Часовой пояс GMT +3, время: 08:07.