Замена телефонного номера на другой

Рейтинг: 0Ответов: 2Опубликовано: 27.02.2015

Есть телефонный номер:

+9 (999) 999-99-99

(формат любой, т.е. между цифрами могут стоять пробелы, дефисы, скобки, плюсы, разная другая лабуда)
И есть произвольные N цифр, скажем

12345678900

N соответствует первому примеру. Задача заменить цифры из первого номера на цифры из второго в яваскрипте.

Хотелось бы что-то менее костыльное, чем следующая конструкция:

var num = '+7 999 123 32 32',
    newnum = '12345678900'.split('');

num = num.replace(/\d/g,'X');//Заменяем все на любой символ, который не встречается в телефонных номерах)
for(i=0;i<newnum.length;i++){//В цикле меняем последовательно все решетки на цифры нового номера
    num = num.replace(/X/,newnum[i]);
}
alert(num);

Я более чем уверен, что есть какая-то суперфункция, типа

num = num.split('магия').superfunction(newnumber).join('другая магия');

UPD:
Есть плагины, но у меня тока обфусцированные версии, а хотелоссь бы понять как работает
UPD2:
в американских номерах X встречается. Поэтому там можно что-то типа вопросительного знака заюзать

Ответы

▲ 4Принят
num = num.replace(/\d/g, function() {
    return newnum.shift();
});
▲ 1

https://jsfiddle.net/j3j8jwav/1/

В качестве заполнителя можно указать любой символ.