JSFiddle - React, Tailwind, and code Playground
JavaScript
Number.prototype.format = function(n, x) {
var re = '(\\d)(?=(\\d{' + (x || 3) + '})+' + (n > 0 ? '\\.' : '$') + ')';
return this.toFixed(Math.max(0, ~~n)).replace(new RegExp(re, 'g'), '$1,');
};
var numbers = [1, 12, 123, 1234, 12345, 123456, 1234567, 12345.67, 123456.789],
nn = [2, 3, 2, 0, 2.3, -4, 'abc', 2, undefined],
xx = [4, -1, 2, 3.5, true, 4, 3, 3, 4];
document.write('<p>Classic Format:</p>');
for (var i = 0, len = numbers.length; i < len; i++) {
document.write('$ ' + numbers[i].format(2) + '<br />');
}
document.write('<p>Special Format:</p>');
for (var i = 0, len = numbers.length; i < len; i++) {
document.write('£ ' + numbers[i].format(nn[i], xx[i]) + '<br />');
}