匹配零后跟6个小数位

时间:2015-10-23 19:33:01

标签: javascript regex

我正在尝试使用正则表达式来匹配零后跟一个点和正好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”值?或者有更好的方法来解决这个问题吗?

2 个答案:

答案 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);