JavaScript正则表达式 - 格式小数,后跟零和字符串

时间:2014-08-18 10:35:03

标签: javascript regex

我有不同的价格格式,需要显示如下:

1.09-----> 1.09
1.00----> 1
1.00 lb --->1lb
1.09 lb---->1.09lb

我需要帮助构建JavaScript的正则表达式,以指定格式显示上述价格。

3 个答案:

答案 0 :(得分:1)

使用parseFloatNumber.toString解析并格式化数字部分。添加一个特殊情况来处理LB:

function formatPrice(price) {
    return parseFloat(price) + (price.match(/ .+$/) ? price.match(/ (.+)$/)[1] : "");
}

console.log(formatPrice("1.00"));    // 1
console.log(formatPrice("1.09"));    // 1.09
console.log(formatPrice("1.09000")); // 1.09
console.log(formatPrice("1.00 lb")); // 1lb
console.log(formatPrice("1.09 lb")); // 1.09lb
console.log(formatPrice("1.09 kg")); // 1.09kg

答案 1 :(得分:0)

你可以试试下面的正则表达式,

> "1.09 lb".replace(/\.00|\s+/g, "");
'1.09lb'
> "1.00 lb".replace(/\.00|\s+/g, "");
'1lb'
> "1.00".replace(/\.00|\s+/g, "");
'1'
> "1.09".replace(/\.00|\s+/g, "");
'1.09'

要删除两个以上的零,

> "1.000".replace(/\.00+|\s+/g, "");
'1'

答案 2 :(得分:0)

你可以尝试

\.0+\s*(\D*)$|[ ]+

替换:$1

这是online demo

示例代码:

var re = /\.0+\s*(\D*)$|[ ]+/g;
var str = '1.09\n1.00\n1.00 lb\n1.09 lb';
var subst = '$1';

var result = str.replace(re, subst);

输出:

1.09
1
1lb
1.09lb