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 />');
}