2012-09-01 50 views
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; 
    } 
); 

正如你可以看到我的函數捕獲正則表達式組,如有必要操縱它們並返回它們進行替換。動態正則表達式組操作

我想要做的是能夠動態地操縱它們,所以如果我在一個字符串中有多個匹配項,我將能夠從一個數組或其他東西中獲得它們(而不是函數(a,b, c)類似函數(array []))。

任何建議如何做到這一點?

回答

1

使用arguments對象。第一個參數是arguments[0],第二個是arguments[1],依此類推。

+0

所以我不需要傳遞任何東西?只是使用參數? – Igor

+0

@Igor:如果我理解正確 - 是的。 – Ryan

+0

不...參數 - > undefined – Igor

1

好吧,我弄明白了..這是表達式中缺少'g'。現在它執行多次它所需要的功能。

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