JavaScript正则表达式-带尾随零和字符串的十进制格式

JavaScript正则表达式-带尾随零和字符串的十进制格式,javascript,regex,Javascript,Regex,我有不同的价格格式,需要显示如下: 1.09-----> 1.09 1.00----> 1 1.00 lb --->1lb 1.09 lb---->1.09lb 我需要帮助为JavaScript构建正则表达式,以指定格式显示上述价格。您可以尝试下面的正则表达式 > "1.09 lb".replace(/\.00|\s+/g, ""); '1.09lb' > "1.00 lb".replace(/\.00|\s+/g, ""); '1lb' > "1.0

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

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

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

您可以尝试下面的正则表达式

> "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'

使用
parseFloat
Number.toString
解析数字部分并设置其格式。添加一个特殊案例来处理LBs:

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
你可以试试

\.0+\s*(\D*)$|[ ]+
更换:
$1

这是

示例代码:

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

需要使用替换两次吗?@user3218114:实际上不需要。事实上,不需要使用regex.then this
“1.0”
1.09
呢。将返回19。然后此
“1.0”。替换(/\.0+(?=\b)\\s+/g,”没错。只需使用
\s*
即可,否则
1.0lb
将无法正确转换。您知道,
\s
已经用于空格,而不仅仅是空格。它也将匹配新行字符。