Добавить запятую к номерам каждые три цифры

Как я могу форматировать числа с помощью разделителя запятой каждые три цифры с помощью jQuery?

Например:

╔═══════════╦═════════════╗ ║ Input ║ Output ║ ╠═══════════╬═════════════╣ ║ 298 ║ 298 ║ ║ 2984 ║ 2,984 ║ ║ 297312984 ║ 297,312,984 ║ ╚═══════════╩═════════════╝ 

    @Paul Creasey имел простейшее решение как регулярное выражение, но здесь он как простой плагин jQuery:

     $.fn.digits = function(){ return this.each(function(){ $(this).text( $(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,") ); }) } 

    Затем вы можете использовать его следующим образом:

     $("span.numbers").digits(); 

    Что-то вроде этого, если вы в регулярном выражении, не уверены в точном синтаксисе для замены tho!

     MyNumberAsString.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); 

    Вы можете использовать Number.toLocaleString() :

     var number = 1557564534; document.body.innerHTML = number.toLocaleString(); // 1,557,564,534 

    Вы можете попробовать NumberFormatter .

     $(this).format({format:"#,###.00", locale:"us"}); 

    Он также поддерживает различные локали, в том числе, конечно, США.

    Вот очень упрощенный пример использования:

            
    1000
    2000000

    Вывод:

     1,000 2,000,000 

    Это не jQuery, но он работает для меня. Взято с этого сайта .

     function addCommas(nStr) { nStr += ''; x = nStr.split('.'); x1 = x[0]; x2 = x.length > 1 ? '.' + x[1] : ''; var rgx = /(\d+)(\d{3})/; while (rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + ',' + '$2'); } return x1 + x2; } 

    Более тщательное решение

    Ядром этого является вызов replace . До сих пор я не думаю, что какое-либо из предлагаемых решений справляется со всеми из следующих случаев:

    • Целые числа: 1000 => '1,000'
    • Строки: '1000' => '1,000'
    • Для строк:
      • Сохраняет нули после десятичной дроби: 10000.00 => '10,000.00'
      • '01000.00 => '1,000.00' нули до десятичного числа: '01000.00 => '1,000.00'
      • Не добавляется запятая после десятичной дроби: '1000.00000' => '1,000.00000'
      • Сохраняет лидирующие '-1000.0000' => '-1,000.000' - или + : '-1000.0000' => '-1,000.000'
      • Возвращает, не изменяет, строки, содержащие цифры: '1000k' => '1000k'

    Следующая функция выполняет все перечисленное.

     addCommas = function(input){ // If the regex doesn't match, `replace` returns the string unmodified return (input.toString()).replace( // Each parentheses group (or 'capture') in this regex becomes an argument // to the function; in this case, every argument after 'match' /^([-+]?)(0?)(\d+)(.?)(\d+)$/g, function(match, sign, zeros, before, decimal, after) { // Less obtrusive than adding 'reverse' method on all strings var reverseString = function(string) { return string.split('').reverse().join(''); }; // Insert commas every three characters from the right var insertCommas = function(string) { // Reverse, because it's easier to do things from the left var reversed = reverseString(string); // Add commas every three characters var reversedWithCommas = reversed.match(/.{1,3}/g).join(','); // Reverse again (back to normal) return reverseString(reversedWithCommas); }; // If there was no decimal, the last capture grabs the final digit, so // we have to put it back together with the 'before' substring return sign + (decimal ? insertCommas(before) + decimal + after : insertCommas(before + after)); } ); }; 

    Вы можете использовать его в плагине jQuery следующим образом:

     $.fn.addCommas = function() { $(this).each(function(){ $(this).text(addCommas($(this).text())); }); }; 

    Используйте функцию Number ();

     $(function() { var price1 = 1000; var price2 = 500000; var price3 = 15245000; $("span#s1").html(Number(price1).toLocaleString('en')); $("span#s2").html(Number(price2).toLocaleString('en')); $("span#s3").html(Number(price3).toLocaleString('en')); console.log(Number(price).toLocaleString('en')); }); 
      


    2016 Ответ:

    Javascript имеет эту функцию, поэтому нет необходимости в JQuery.

     yournumber.toLocaleString("en"); 

    Вы также можете посмотреть плагин jquery FormatCurrency (из которого я являюсь автором); он поддерживает несколько локалей, но может иметь накладные расходы на валютную поддержку, которая вам не нужна.

     $(this).formatCurrency({ symbol: '', roundToDecimalPlace: 0 }); 
    Давайте будем гением компьютера.