如何用字符串替换字符串中的表达式?

时间:2014-05-16 22:03:46

标签: javascript regex replace parsefloat

很抱歉,如果问题措辞严重,但我想问的是,如何用两个捕获的组的产品替换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项目。

感谢。

2 个答案:

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