使用正则表达式从货币中删除小数点?

时间:2016-12-07 10:17:47

标签: javascript regex

我有一个来自json数据的货币值范围,如下所示格式: $ 25,000- $ 35,000。它在Chrome和Firefox中显示得像,但在IE9和IE10浏览器中显示为" $ 25,000.00- $ 35,000.00"。

想在IE浏览器上点后删除那些零。我试过下面的Regex:

s.replace(/(\.[0-9]*?)0+$/, "");

但输出如下:

"$25,000.00-$35,000"

仅删除值的末尾。请让我知道正则表达式有什么问题?请帮我解决这个问题。

4 个答案:

答案 0 :(得分:0)

假设点之后总是有0,你可以使用:/\.0+/g

答案 1 :(得分:0)

var s="$25,000.00-$35,000.00";
s=s.replace(/(\.[0-9]*?)0+/g, "");
console.log(s);

答案 2 :(得分:0)

取决于是否在点之后可能存在除0之外的其他东西以及可以有多少:

  • /\.(.*?[0]*)/g:删除点和所有后续零
  • /\.(.*?[0]{1,2})/g:删除点和以下1或2后面的零
  • /\.(.*?[0-9]*)/g/\.(.*?\d*)/g:删除点和以下数字
  • /\.(.*?[0-9]{1,2})/g/\.(.*?\d*)/g:删除点和以下1或2个数字

希望这有帮助

答案 3 :(得分:0)

基本上,$标志着文本的结尾。您可以从正则表达式中删除它。但是,当文本结尾为.01时,它将失败。

您应找到该值,然后只选择美元符号和不带小数的数字。

s.replace(/(\$[0-9,]+)\.[0-9]+/, "$1");

(\$[0-9,]+)匹配美元符号和千位分隔符(,),同时将它们保存为第一组匹配。

\.[0-9]+匹配小数。

"$1"将文字替换为第一组。

希望这有帮助!