2011-04-18 69 views
1

基本上,我試圖用關聯數組中的元素替換部分字符串。但是,我需要基於從replace()表達式中捕獲組生成的反向引用來獲取元素。Javascript:引用數組元素使用正則表達式Backreference

使用第一個捕獲組,我創造了這個代碼,它不工作:(正則表達式正常工作...我只是不能讓它搶數組元素)

content = content.replace(/%(\w+)%/g,this.vars["$1"]); 

我該如何去實現這樣的事情?

回答

2

String.replace can take a function as the second argument

var that = this, 
    re = /%(\w+)%/g; 

content = content.replace(re, function (str, p1) 
{ 
    return that.vars[p1]; 
}); 
+0

哦哇。那麼簡單;爲什麼我沒有想到這一點?謝謝! :) – BraedenP 2011-04-18 05:00:32

+1

因爲你不知道'replace'可以帶功能嗎?因爲它不平凡?你將不得不問一個新的問題(可能在一個不同的SE網站)來獲得答案;-) – 2011-04-18 05:02:08

+0

呵呵..我知道替換可以採取一個功能;由於某種原因,它只是沒有跨過我的腦海。 我只是等到時間倒數,所以我可以接受你的答案。 – BraedenP 2011-04-18 05:04:26