Вот простая функция, которую я использую для форматирования телефонных номеров, ничего особенного, но выполняет свою работу.
function formatPhoneNumber(phoneNumber) {
var rawPhoneNumber = phoneNumber.replace("(", "").replace(")", "").replace(/-/g, "").replace(/ /g, "");
if (isNaN(rawPhoneNumber)) {
return null;
}
if (rawPhoneNumber.length == 10) {
return "(" + rawPhoneNumber.substring(0, 3) + ") " + rawPhoneNumber.substring(3, 6) + "-" + rawPhoneNumber.substring(6, 10);
}
if (rawPhoneNumber.length == 11) {
return rawPhoneNumber.substring(0, 1) + " (" + rawPhoneNumber.substring(1, 4) + ") " + rawPhoneNumber.substring(4, 7) + "-" + rawPhoneNumber.substring(7, 11);
}
}
Контрольные примеры:
$("body").append("<h1>" + formatPhoneNumber("1234567890") + "</h1>");
$("body").append("<h1>" + formatPhoneNumber("11234567890") + "</h1>");
$("body").append("<h1>" + formatPhoneNumber("11267890") + "</h1>");
Будет ли вывод:
<h1>(123) 456-7890</h1>
<h1>1 (123) 456-7890</h1>
<h1>undefined</h1>
Пример для jsfiddle .