Skip to content

Instantly share code, notes, and snippets.

@mattwilliamson
Created August 14, 2013 22:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mattwilliamson/6236116 to your computer and use it in GitHub Desktop.
Save mattwilliamson/6236116 to your computer and use it in GitHub Desktop.
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"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment