adamwdraper / Numeral-js

A javascript library for formatting and manipulating numbers.
http://numeraljs.com
MIT License
9.66k stars 925 forks source link

Doesn't support phone numbers #170

Open donnyv opened 10 years ago

donnyv commented 10 years ago

Tried doing this but it didn't format. numeral(6095613928).format('(000)000-0000')

joelmats commented 9 years ago

+1

Rodrigojorge commented 8 years ago

+1

dusthaines commented 8 years ago

+1

shelbyblanton commented 8 years ago

+1

qbunt commented 7 years ago

+1

ittikorns commented 7 years ago

+1

nicholasbester commented 7 years ago

+1

obregon08 commented 7 years ago

I added this "custom format" to my code to get it working. Borrowed from https://github.com/stevekinney/node-phone-formatter

import numeral from 'numeral';

numeral.register('format', 'phone', {
  regexps: {
    format: /\+?N?[\.\ \-]?\(?NNN\)?[\.\ \-]?NNN[\.\ \-]?NNNN/
  },
  format : function (value, formatString) {
    function normalize(phoneNumber) {
      return phoneNumber.toString().replace(
        /^[\+\d{1,3}\-\s]*\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/,
        "$1$2$3"
      );
    }

    function format(phoneNumber, formatString) {
      phoneNumber = normalize(phoneNumber);
      for (var i = 0, l = phoneNumber.length; i < l; i++) {
        formatString = formatString.replace("N", phoneNumber[i]);
      }
      return formatString;
    }

    return format(value, formatString);
  }
});

And now I can do:

numeral(7861231234).format('(NNN) NNN-NNNN')