我可以在text.replace函数的第二部分中使用我的正则表达式部分吗?

时间:2014-05-19 07:59:52

标签: javascript regex

假设我有一个包含10km的文本,我想将其转换为m:

var sample = "100km"
sample = sample.replace(/(\d)+(km)/g,(d * 1000).toString() + "m")

这不起作用,因为我相信" d"不被认为是正则表达式中的一个。有没有解决的办法? (我想使用文中找到的" 100"而且,它可能会在文本中出现不止一次,比如说" 100m 10m"等......)

2 个答案:

答案 0 :(得分:2)

您可以将String#replace与回调一起使用并进行计算:

sample = '123.456km';
sample = sample.replace(/\b(\d+(?:\.\d+)?)k(?=m)/g, function($0, $1) { return parseFloat($1)*1000; } );
//=> 123456m

或者你想要避免前瞻:

sample = sample.replace(/\b(\d+(?:\.\d+)?)km/g, function($0, $1) { return parseFloat($1)*1000+'m'; } );

答案 1 :(得分:1)

AFAIK,您无法在替换字符串中进行计算。也就是说,在你的情况下,你可以简单地添加三个0

sample.replace(/(\d+)km/g, "$1000m")

$1表示第一个捕获组,即(\d+)

Demo