Javascript Регулярное выражение до последних трех цифр, разделенных запятыми, а затем двух цифр - PullRequest
1 голос
/ 16 июня 2020

Я ищу регулярное выражение для разделения суммы в американском формате запятой, как показано ниже

1111111111 to 1,11,11,11,111

Я пробовал, как показано ниже

function formatNumber(num) {
  return num.toString().replace(/(\d)(?=(\d{2})*(\d{3})+(?!\d))/g, '$1,')
}

console.info(formatNumber(2665.68)) 
console.info(formatNumber(102665.68)) 
console.info(formatNumber(111102665.32)) 
console.info(formatNumber(11111111.32))

https://jsfiddle.net/tyLh82og/

в основном последние три di git затем 2 di git до начала.

Я нашел много регулярных выражений, которые разделяют 3 цифры, 2 цифры или 4 цифры.

Я попытался объединить 3 и di git разделение, но не смог получить знания о регулярных выражениях.

Пожалуйста, помогите

Спасибо

1 Ответ

1 голос
/ 16 июня 2020

Вы можете использовать

.replace(/(?!^)(?=(?:\d{2})*\d{3}(?:\.|$))/g, ',')

См. демонстрацию регулярных выражений

Подробности

  • (?!^) - не начало позиции строки
  • (?=(?:\d{2})*\d{3}(?:\.|$)) - сразу справа от текущей позиции должно быть
    • (?:\d{2})* - ноль или более двух цифр
    • \d{3} - три цифры
    • (?:\.|$) - . или конец строки.

JavaScript демо:

function formatNumber(num) {
  return num.toString().replace(/(?!^)(?=(?:\d{2})*\d{3}(?:\.|$))/g, ',')
}

console.info(formatNumber(2665.68)) 
console.info(formatNumber(102665.68)) 
console.info(formatNumber(111102665.32)) 
console.info(formatNumber(11111111.32))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...