2012-08-27 81 views
1

我試圖用JavaScript代替一些代碼。不知何故,這是行不通的。Javascript - 替換HTML代碼

var name = "check & ' \""; 
alert(name); 
alert(name.replace(/["]/g, "\"")); 
alert(name.replace(/[\]/g, "\"));  

我在做什麼錯?

+0

順便說一下,這些「代碼」被稱爲_entities_。 – user2428118

回答

2

在正則表達式中,[]的意思是「任何下列字符」。因此,/[\]/g將匹配&,#,9,2;

嘗試一下沒有[]

var name = "check & ' \""; 
alert(name); 
alert(name.replace(/"/g, "\"")); 
alert(name.replace(/\/g, "\"")); 
3

不要使用正則表達式,只是對其進行分析:

var d = document.createElement('div'); 
d.innerHTML = "check & ' \""; 
console.log(d.innerText);//all done 

創建一個元素(在內存中,它不會顯示),並使用innerText屬性,這將返回文本當量(即將所有html實體轉換爲它們各自的字符)。

read this

作爲一個側面說明:爲什麼/["]/g永遠不會成功,因爲你正在創建一個字符類/組的原因:它會匹配組,而不是整個字符串中的任意1個字符:

d.innerHTML.replace(/["]/g,'@');//"check @[email protected] ' \"" 
d.innerHTML.replace(/(")/g,'@');//"check & ' \"" 
+0

@DavidThomas:NP,你說得對。我沒有理由不客氣 –

+0

呃,我們都在那裏...... =) –