我試圖用JavaScript代替一些代碼。不知何故,這是行不通的。Javascript - 替換HTML代碼
var name = "check & ' \"";
alert(name);
alert(name.replace(/["]/g, "\""));
alert(name.replace(/[\]/g, "\"));
我在做什麼錯?
我試圖用JavaScript代替一些代碼。不知何故,這是行不通的。Javascript - 替換HTML代碼
var name = "check & ' \"";
alert(name);
alert(name.replace(/["]/g, "\""));
alert(name.replace(/[\]/g, "\"));
我在做什麼錯?
在正則表達式中,[]
的意思是「任何下列字符」。因此,/[\]/g
將匹配&
,#
,9
,2
或;
。
嘗試一下沒有[]
。
var name = "check & ' \"";
alert(name);
alert(name.replace(/"/g, "\""));
alert(name.replace(/\/g, "\""));
不要使用正則表達式,只是對其進行分析:
var d = document.createElement('div');
d.innerHTML = "check & ' \"";
console.log(d.innerText);//all done
創建一個元素(在內存中,它不會顯示),並使用innerText
屬性,這將返回文本當量(即將所有html實體轉換爲它們各自的字符)。
作爲一個側面說明:爲什麼/["]/g
永遠不會成功,因爲你正在創建一個字符類/組的原因:它會匹配組,而不是整個字符串中的任意1個字符:
d.innerHTML.replace(/["]/g,'@');//"check @[email protected] ' \""
d.innerHTML.replace(/(")/g,'@');//"check & ' \""
@DavidThomas:NP,你說得對。我沒有理由不客氣 –
呃,我們都在那裏...... =) –
順便說一下,這些「代碼」被稱爲_entities_。 – user2428118