使用正则表达式从字符串数量中删除千位分隔符的最佳方法

时间:2014-11-24 13:14:46

标签: javascript regex replace separator

我有包含金额的变量,并希望删除(美国)千位分隔符,但也必须涵盖可能存在非美国格式化金额的情况,其中逗号用于小数而不是数千位我不想替换逗号。

示例:

  • 1,234,567.00需要成为1234567.00
  • 1,234.00需要成为1234.00
  • 1.234.567,00需要保持不变,因为不是US格式(即此处的逗号用于小数)
  • 1.234,00需要保持不变,因为不是US格式(即这里的逗号用于小数)

我正在考虑使用以下内容但不确定,因为我对Regex很新:

myVar.replace(/(\d+),(?=\d{3}(\D|$))/g, "$1");

这里最好的解决方案是什么?注意:我只需要像上面的例子那样覆盖正常数量,不需要像字母/数字组合那样的特殊情况或1,2,3等等。

5 个答案:

答案 0 :(得分:8)

这个可能适合您的需求:

,(?=[\d,]*\.\d{2}\b)

Regular expression visualization

Debuggex Demo

答案 1 :(得分:1)

用空字符串替换/,(?=\d*[\.,])/g

http://regexr.com/39v2m

答案 2 :(得分:1)

myVar = myVar.replace(/([。,])(\ d \ d \ d \ D | \ d \ d \ d $)/ g,'$ 2');

删除期间。或逗号,当用作千分隔符时。

答案 3 :(得分:0)

if (string.match(/\.\d{2}$/) {
    string = string.replace(',', '');
}

string.replace(/,(?=.*\.\d+)/g, '');

答案 4 :(得分:0)

您可以使用replace()方法删除所有逗号。它们将被替换为空字符串。我正在使用带有expahead断言的reg exp来检测逗号后面是否跟着三个数字,如果给定的逗号将被删除。

string.replace(/,(?=\d{3})/g, '')

示例:

'12,345,678.90'.replace(/,(?=\d{3})/g, '')
// '12345678.90'

'1,23,456.78'.replace(/,(?=\d{3})/g, '')
// '1,23456.78'

'$1,234.56'.replace(/,(?=\d{3})/g, '')
// '$1234.56'