DEV Community

Mykolas Mankevicius
Mykolas Mankevicius

Posted on

[TIL] a little number formatter in Javascript

For those who want to transform numbers into to nicer strings, here's a little snippet of code that can help you out:

const isItANumber = (str) => {
  return /^-?[0-9]+(e[0-9]+)?(\.[0-9]+)?$/.test(str);
};

const formatNumber = (value, format = true) => {
  if (!format) {
    return value;
  }

  // This use case is specific to my project, you can delete it
  if (!isItANumber(value)) {
    return value;
  }
  const number = Number.parseFloat(value);
  if (typeof number !== 'number' || Number.isNaN(number)) {
    return value;
  }

  // 'en-US' is my specific use case, you can choose whatever you want, or leave it empty for client specific locale
  return number.toLocaleString('en-US');
};

console.log(formatNumber(717140.87)); // '717,140.87'
console.log(formatNumber(-717140.87)); // '-717,140.87'
// This use case is specific to my project, you can delete it
console.log(formatNumber('-71,714,087 units')); // '-71,714,087 units'
Enter fullscreen mode Exit fullscreen mode

Discussion (1)

Collapse
deadmor39411089 profile image
❌ Dead Moroz ❌

Proper regex to validate numbers would be /^[\+\-]?\d*\.?\d+(?:[Ee][\+\-]?\d+)?$/ :)