假设我有一个包含10km的文本,我想将其转换为m:
var sample = "100km"
sample = sample.replace(/(\d)+(km)/g,(d * 1000).toString() + "m")
这不起作用,因为我相信" d"不被认为是正则表达式中的一个。有没有解决的办法? (我想使用文中找到的" 100"而且,它可能会在文本中出现不止一次,比如说" 100m 10m"等......)
答案 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+)
。