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.