2012-11-05 56 views
0

我面臨兩個問題。 (與jQuery)

for (var i=0; i<len; i++) { 
    var e = arr[i],    //<- strings 
     re = new RegExp(e,"ig"); 
    target.html(
     target.html().replace(
      re, "<span class='rep'>" + e + "</span>" 
     ) 
    ); 
} 
  1. 原始值不能替換之後被調用。 (如「$ 1」)
  2. 如果替代候選人(屬性e)有單引號,則它不能替代。

回答

2

實際上,你可以使用類似的東西$1

for (var i=0; i<len; i++) { 
    var e = arr[i],    //<- strings 
     re = new RegExp(e,"ig"); 
    target.html(
     target.html().replace(
      re, "<span class='rep'>$&</span>" 
     ) 
    ); //you could also have used $1 to refer to the first backreference, instead of the entire match 
} 

你的第二個問題是,我不太清楚。單引號不是正則表達式中的特殊字符。

我無法複製您的其他問題。這是一個工作示例:http://jsfiddle.net/Xsjt7/1/

+0

哇,謝謝你的建議。 「$&」工作!這是我長久以來的突出問題。關於第二個問題,例如,「不要」或「不會」,有些詞不會被替換。看起來這個角色通常是通過控制檯日誌看到的。 – JIGEN

+0

這取決於你用什麼作爲正則表達式,也就是你的字符串數組是什麼。 –

+0

當我不明白你的建議時,我很抱歉。 這是console.log()的結果: RegExp/what/ig''RegExp /沒有任何意義/ ig''RegExp /沒有任何意義/ ig''RegExp/it's/ig' 在這個時候,「沒有任何意義」,「它」沒有被取代。 問題的識別點不同嗎? – JIGEN

0

,如果你想使用$1和ARR只是一個字符串數組,你可以加入它:

var arr = ["what","not make any sense","n't make any sense","it's"]; 
var target = $('#mydiv'); 

var re = new RegExp("(" + arr.join("|") +")","ig"); 
target.html(
    target.html().replace(re, "<span class='rep'>$1</span>") 
); 
+0

謝謝你的建議。我認爲我會用「$&」。 – JIGEN