我正在尝试使用正则表达式来匹配零后跟一个点和正好6位数。例如 - > 0.274538
6位数字可以是任意数字0-9。此外,在比赛之前或之后可能存在任何字符(包括空格)。
我想修剪掉比赛的尾随4位数,以便结果为零,然后是2位小数(即0.27)。
我在Javascript字符串替换函数中使用此正则表达式。我包含了“g”修饰符,因为字符串中会有几个匹配。
我对正则表达式不太满意,但我认为以下代码非常接近我需要的...
var replaced = string.replace(/[0]\.[0-9]{6}$/g, X);
唯一的事情是......我不确定在这里使用什么'替换'值(X)。如果预期只有一个匹配,那么我可以在替换的字符串上使用“slice”。但由于我期待字符串中有几个正则表达式匹配,我应该将什么用于“X”值?或者有更好的方法来解决这个问题吗?
答案 0 :(得分:6)
您可以使用捕获组:
var s = '0.274538'
var r = s.replace(/\b(0\.\d{2})\d{4}\b/g, '$1');
//=> 0.27
\b
用于字边界。(..)
被捕获组#1以获取0
,然后是DOT和2小数点。$1
是对已捕获的组#1 答案 1 :(得分:1)
这是另一种方法,使用function
作为替换参数:
var regex = /0\.\d{6}/g;
var num = '0.543456';
var trimmed = num.replace(regex, function(match){
return match.substr(0, match.length - 4);
});
console.log(trimmed);