很抱歉,如果问题措辞严重,但我想问的是,如何用两个捕获的组的产品替换JS中字符串的子字符串?要了解我的意思,请查看以下行。我将如何执行以下任务:
expression.replace(regexp,parseFloat("$1")*parseFloat("$3"));
当" regexp"是/(\d+(\.\d+)?)\*(\d+(\.\d+)?)/
和"表达"是"20*5"
?
它不起作用,我不确定为什么。 expression.replace(regexp,"$1_$3")
打印出20_5
,因此为什么会将"$1"
和"$3"
放在parseFloat()
中,将其值从第一组和第三组的值更改为字符串"$1"
和"$3"
?
如果您想知道,这是针对网站GraphWidget作为PLTW课程的STEM项目。
感谢。
答案 0 :(得分:2)
如果你这样做我认为没有区别:
"20*5".split('*').reduce(function(a,c){
return a <=0? c : a*c
},0);
这种方法的优点是它也可以与"20*5*3"
一起使用而无需更改代码
免责声明:我们了解到您可能希望使用正则表达式来解决您的问题。我只是提供问题的侧视图。
答案 1 :(得分:1)
你可以试试这个:
"20*5".replace(
/(\d+(\.\d+)?)\*(\d+(\.\d+)?)/,
function (match, group1, group2, group3) {
return parseFloat(group1)*parseFloat(group3)
}
);
请参阅此文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace