【问题标题】:Javascript regex format price, 2 cases [duplicate]Javascript regex 格式价格,2 例 [重复]
【发布时间】:2019-04-30 10:39:11
【问题描述】:

我有 2 种价格格式,我被正则表达式卡住了,我找不到任何解决方法。

我的正则表达式格式化价格:/(\d)(\d{3})(\.)/g

案例一:

var price             = '1000000.0000';
var decimals          = 2;
var thousandSeparator = ',';
var decimalSeparator  = '.';
var formatedPrice     = price.replace(/(\d)(\d{3})(\.)/g, '$1' + thousandSeparator + '$2' + decimalSeparator + '');
document.querySelector( '#case_1 span' ).innerHTML = formatedPrice;

结果:1000,000.0000

预期:1,000,000.0000

案例2:

var price             = '1000000.0000';
var decimals          = 2;
var thousandSeparator = '.';
var decimalSeparator  = ',';
var formatedPrice     = price.replace(/(\d)(\d{3})(\.)/g, '$1' + thousandSeparator + '$2' + decimalSeparator + '');
document.querySelector( '#case_2 span' ).innerHTML = formatedPrice;

结果:1000.000,0000

预期:1.000.000,0000

JsFiddle:https://jsfiddle.net/cpan2s6d/


是否可以只使用正则表达式来实现?

谢谢

【问题讨论】:

  • @Tim Biegeleisen,我已经尝试过了。对我没用
  • 试试看Intl.NumberFormat api,它可以让你在没有正则表达式的情况下做你想做的事

标签: javascript jquery regex


【解决方案1】:

试试这个:

首先用您的小数分隔符替换所有点。然后将数千人分组。

price.replace(".", decimalSeparator).replace(/\B(?=(\d{3})+(?!\d))/g, thousandSeparator);

代码:

var price = '1000000.00';
var decimals = 2;
var thousandSeparator = ',';
var decimalSeparator = '.';
var formatedPrice = price.replace(".", decimalSeparator).replace(/\B(?=(\d{3})+(?!\d))/g, thousandSeparator);

document.querySelector('#case_1 span').innerHTML = formatedPrice;

var price = '1000000.00';
var decimals = 2;
var thousandSeparator = '.';
var decimalSeparator = ',';
var formatedPrice = price.replace(".", decimalSeparator).replace(/\B(?=(\d{3})+(?!\d))/g, thousandSeparator);

document.querySelector('#case_2 span').innerHTML = formatedPrice
  <div id="case_1">Case 1: <span></span></div>
  <div id="case_2">Case 2: <span></span></div>

【讨论】:

  • 它不适用于 4 位小数,例如:“1,000,000.0000”。返回“1,000,000.0,000”。问题已更新。
猜你喜欢
  • 2023-03-29
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
  • 2015-12-31
  • 1970-01-01
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多