Formats phone numbers to US or E164
function formatNumber(number) {
number = number.replace(/\D+/g, '');
number = number.replace(/^(1)(\d{0,2})$/, '$1($2');
number = number.replace(/^(1)(\d{3})$/, '$1($2)');
number = number.replace(/^(1)(\d{3})(\d{1,3})$/, '$1($2) $3');
number = number.replace(/^(1)(\d{3})(\d{3})(\d{1,4})$/, '$1($2) $3-$4');
number = number.replace(/^(1)(\d{3})(\d{3})(\d{4})(\d+)$/, '$1($2) $3-$4 x$5');
number = number.replace(/^(1)(.*)/, '$1 $2');
return '+' + number;
}
// US (Starts with 1)
// formatNumber('1')
// "+1 ("
// formatNumber('1555')
// "+1 (555)"
// formatNumber('155')
// "+1 (55"
// formatNumber('1555.11')
// "+1 (555) 11"
// formatNumber('1555.111')
// "+1 (555) 111"
// formatNumber('1555.111-')
// "+1 (555) 111"
// formatNumber('1555.111*345')
// "+1 (555) 111-345"
// formatNumber('1555.111*3455')
// "+1 (555) 111-3455"
// formatNumber('1555.111*3455#112233')
// "+1 (555) 111-3455 x112233"
// All others E164
// formatNumber('00 98 87 56')
// "+00988756"