繁体   English   中英

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

[英]Can I use the part of my regexp expression in the second part of text.replace function?

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

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

这是行不通的,因为我认为regexp无法将“ d”识别为该字符。 有没有解决的办法? (我想使用文本中找到的“ 100”,而且,它可能在文本中出现多次,例如“ 100m 10m”,等等。)

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

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

您想要避免前瞻的OR:

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

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

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

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

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM