正则表达式在第一个小数后加0

时间:2012-01-11 10:54:33

标签: javascript regex currency

我目前正在学习正则表达式,但迫切需要这个。

我有一组值(10, 19.5, 13.99, 9.09)。除第二个值外,这些格式都很好。

我的问题是如何重写以便19.5变为19.50而不影响其他条目,即(10, 19.50, 13.99, 9.09)

非常感谢你们。

6 个答案:

答案 0 :(得分:2)

如果这些是数字,请使用toFixed()

如果这些是字符串,您可以使用

num="19.5"
num.replace(/^(\d+\.\d)$/,"$10");

答案 1 :(得分:0)

编辑回答:

<script type="text/javascript">
var num = 19.9;
if(String(num).indexOf('.')>-1)
{
    num = num.toFixed(2);
}
alert(num);
</script>

直接的答案是使用“.toFixed(2)”,但我们验证它是否为小数,以便我们没有“10.00”之类的结果

对于进一步的格式化选项,您有jquery插件numberformatter:

http://archive.plugins.jquery.com/project/numberformatter

这是项目网页:

http://code.google.com/p/jquery-numberformatter/

此库的直接链接:

http://jquery-numberformatter.googlecode.com/files/jquery.numberformatter-1.2.2.jsmin.js

答案 2 :(得分:0)

如果您想使用RegEx,您可以执行以下操作:

"10, 19.5, 13.99, 9.09".replace(/^\d+\.\d{1}$/g, function (full) {
    return full + "0";
});

这将返回"10, 19.50, 13.99, 9.09"

答案 3 :(得分:0)

搜索:

(\.\d)(\D|$)

那是点后跟一个数字,然后是一个不是数字(或字符串结尾)的东西。

替换为:

$10$2

这是第一个捕获组,然后是'0',然后是第二个捕获组。

var s = '10, 19.5, 13.99, 9.9';
s = s.replace(/(\.\d)(\D|$)/g, '$10$2');
// s == '10, 19.50, 13.99, 9.90'

答案 4 :(得分:0)

例如,迭代每个值:

var value = '19.5';
value = value.replace(/^\d+[\.,]\d{1}$/, '$&0');

答案 5 :(得分:0)

试试这个

var array = [10, 19.5, 13.99, 9.09];
for(var i=0; i< array.length;i++){
    if(/[0-9].[0-9]{1}$/.test(array[i]))  array[i] = array[i]+'0';
}
alert(array);

OUTPUT : 

10, 19.50, 13.99, 9.09

小提琴:http://jsfiddle.net/M9hZx/