1

抱歉,如果问题措辞不当,但我想问的是,您如何将 JS 中字符串的子字符串替换为两个捕获组的乘积?要了解我的意思,请查看以下行。我将如何执行如下任务:

expression.replace(regexp,parseFloat("$1")*parseFloat("$3"));

当“正则表达式”是/(\d+(\.\d+)?)\*(\d+(\.\d+)?)/和“表达式”是"20*5"

它不起作用,我不确定为什么。 expression.replace(regexp,"$1_$3")打印出来20_5,那么为什么 put"$1""$3"inparseFloat()将它们的值从第一组和第三组的值更改为字符串"$1""$3"

如果您想知道,这是针对网站GraphWidget作为 PLTW 类的 STEM 项目。

谢谢。

4

2 回答 2

2

如果你这样做我认为没有区别:

"20*5".split('*').reduce(function(a,c){ 
   return  a <=0? c : a*c 
 },0);

这种方法的优点是它也可以在"20*5*3" 不更改代码的情况下使用

免责声明:我了解您可能希望使用正则表达式来解决您的问题。我只是提供问题的侧面视图。

于 2014-05-16T22:13:39.970 回答
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

于 2014-05-16T23:19:21.237 回答