JSFiddle - React, Tailwind, and code Playground

JavaScript

/**
 * Number.prototype.format(n, x, s, c)
 * 
 * @param integer n: length of decimal
 * @param integer x: length of whole part
 * @param mixed   s: sections delimiter
 * @param mixed   c: decimal delimiter
 */
Number.prototype.format = function(n, x, s, c) {
    var re = '\\d(?=(\\d{' + (x || 3) + '})+' + (n > 0 ? '\\D' : '$') + ')',
        num = this.toFixed(Math.max(0, ~~n));
    
    return (c ? num.replace('.', c) : num).replace(new RegExp(re, 'g'), '$&' + (s || ','));
};

var numbers = [1, 12, 123, 1234, 12345, 123456, 1234567, 12345.67, 123456.789];

document.write('<p>Classic Format:</p>');
for (var i = 0, len = numbers.length; i < len; i++) {
    document.write('R$ ' + numbers[i].format(2, 3, '.', ',') + '<br />');
}