0
node.data =
  node.data.replace(/((?:\d+\.?\d+?)|(?:\d{1,3}(?:\,\d{3})+)) *([a-zA-Z]+)/,
    function(a,b,c) {
      return value[c] ? a+" (("+(b.replace(',',"") * value[c]).toFixed(2) +
      " "+ names[c]+"))" : a;
    }
  );

如您所见,我的函数捕获了正则表达式组,必要时对其进行操作并返回它们以进行替换。

我想做的是能够动态地操作它们,所以如果我在字符串中有多个匹配项,我将能够从数组或其他东西中获取它们(比如代替function(a,b,c)之类的函数(数组[]))。

任何建议如何做到这一点?

4

2 回答 2

1

使用arguments对象。arguments[0]是第一个参数,arguments[1]是第二个参数,依此类推。

于 2012-09-01T23:54:13.987 回答
1

好吧,我确实想通了..这是表达式中缺少的'g'..现在它根据需要多次执行该函数。

/((?:\d+.?\d+?)|(?:\d{1,3}(?:\,\d{3})+)) *([a-zA-Z]+)/ G

于 2012-09-02T00:23:50.130 回答