2011-10-02 37 views
0

爲了簡單起見&學習了新東西,請不要建議使用兩個單獨的替換函數。我知道這是一種選擇,但我寧願知道如何做到這一點(或者如果這是不可能的)。反向引用每個字符

'<test></test>'.replace(/<|>/g,'$&'.charCodeAt(0)) 

這就是我到目前爲止。如你所知,這個示例代碼是用於另一段代碼來轉義HTML實體,同時仍然使用innerHTML(因爲我打算包含一些HTML實體,比如小圖像,所以請不要暗示textContent)。

由於我試圖替換<>,所以問題是將每個人轉換爲各自的字符代碼。由於正則表達式允許這個「OR」條件以及對每個條件的反向引用,所以我希望有一種方法可以在每個單獨字符被替換時獲得引用。 $&將返回<><>(因爲它們按順序被替換),但我不知道如何獲取它們,因爲它們被替換並將它們的字符代碼用於HTML實體。問題是,如果有的話,我不知道在這種情況下使用什麼。

如果解釋不夠清楚,我希望它是這樣的(這顯然是行不通的,它會傳達最好我的意思):

假設x是指數的字符被替換,

'<test></test>'.replace(/<|>/g,'$&'.charCodeAt(x)) 

希望這會更有意義。那麼,這在某種程度上可以實現嗎?

回答

2
'<test></test>'.replace(/[<>]/g,function(a) {return '&#'+a.charCodeAt(0)+';';}); 

我把字符放在方括號內(不知道它是什麼名字)。這樣你可以添加你想要的任何字符。

以上將返回:

&#60;test&#62;&#60;/test&#62; 
+0

我從來沒有想過要在裏面添加一個功能。很有選擇。感謝你的回答! – Ruffy