JavaScript 替換Html標(biāo)簽實(shí)現(xiàn)代碼
更新時間:2009年10月14日 15:12:22 作者:
這種技術(shù)被廣泛應(yīng)用于表單驗(yàn)證,語法高亮和危險(xiǎn)字符過濾中。一段話如果很長,如果不想像下面那樣替換,我們得想些辦法了。
復(fù)制代碼 代碼如下:
str = str.<br />
replace( /&(?!#?\w+;)/g , '&').<br />
replace( /undefinedundefined([^undefinedundefined]*)"/g , '“$1”' ).<br />
replace( /</g , '<' ).<br />
replace( />/g , '>' ).<br />
replace( /…/g , '…' ).<br />
replace( /“/g , '“' ).<br />
replace( /”/g , '”' ).<br />
replace( /‘/g , '‘' ).<br />
replace( /'/g , ''' ).<br />
replace( /—/g , '—' ).<br />
replace( /–/g , '–' );
上面這個還算短了,我看過一些論壇的JS代碼,在把Wind Code轉(zhuǎn)換成HTML時,那真是瘋子似的寫上二三十行。其實(shí)我們大可以把這些匹配模式與替換后的字符放到一個哈希中,然后一口氣替換掉。
復(fù)制代碼 代碼如下:
var hash = {
'<' : '<' ,
'>' : '>',
'…' : '…',
'“' : '“' ,
'”' : '”' ,
'‘' : '‘' ,
''' : ''' ,
'—' : '—',
'–' : '–'
};
str = str.
replace( /&(?!#?\w+;)/g , '&' ).
replace( /undefinedundefined([^undefinedundefined]*)"/g , '“$1”' ).
replace( /[<>…“”‘'—–]/g , function ( $0 ) {
return hash[ $0 ];
});
但這個缺陷也很明顯,如哈希的鍵必須是簡單的普通字符串,不能是復(fù)雜正則,這就是我們不得不分開的原因。replace在老一點(diǎn)的瀏覽器是不支持function的。為此,我們只好放棄上面最后那個replace方式,替換方統(tǒng)一為普通字符串。
復(fù)制代碼 代碼如下:
String.prototype.multiReplace = function ( hash ) {
var str = this, key;
for ( key in hash ) {
if ( Object.prototype.hasOwnProperty.call( hash, key ) ) {
str = str.replace( new RegExp( key, 'g' ), hash[ key ] );
}
}
return str;
};
Object.prototype.hasOwnProperty.call( hash, key )是用來過濾繼承自原型的方法與屬性的。這樣一來,使用就簡單了:
復(fù)制代碼 代碼如下:
str = str.multiReplace({
'&(?!#?\\w+;)' :'&',
'undefinedundefined([^undefinedundefined]*)" : '“$1”',
'<' : '<' ,
'>' : '>',
'…' : '…',
'“' : '“' ,
'”' : '”' ,
'‘' : '‘' ,
''' : ''' ,
'—' : '—',
'–' : '–'
});
您可能感興趣的文章:
- JS檢測頁面中哪個HTML標(biāo)簽觸發(fā)點(diǎn)擊事件的方法
- js過濾HTML標(biāo)簽完整實(shí)例
- javascript通過獲取html標(biāo)簽屬性class實(shí)現(xiàn)多選項(xiàng)卡的方法
- JavaScript檢測字符串中是否含有html標(biāo)簽實(shí)現(xiàn)方法
- js簡單實(shí)現(xiàn)HTML標(biāo)簽Select聯(lián)動帶跳轉(zhuǎn)
- JS對HTML標(biāo)簽select的獲取、添加、刪除操作
- js過濾HTML標(biāo)簽以及空格的思路及代碼
- js自動閉合html標(biāo)簽(自動補(bǔ)全html標(biāo)記)
- Java/Js下使用正則表達(dá)式匹配嵌套Html標(biāo)簽
- 用JS實(shí)現(xiàn)HTML標(biāo)簽替換效果
- javascript實(shí)現(xiàn)去除HTML標(biāo)簽的方法
相關(guān)文章
用VsCode編輯TypeScript的實(shí)現(xiàn)方法
這篇文章主要介紹了用VsCode編輯TypeScript的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05js parentElement和offsetParent之間的區(qū)別
這里主要說的是 offsetParent 屬性,這個屬性在 MSDN 的文檔中也沒有解釋清楚,這就讓人更難理解這個屬性。 這幾天在網(wǎng)上找了些資料看看,再加上自己的一些測試,對此屬性有了那么一點(diǎn)的了解,在這里總結(jié)一下。2010-03-03JavaScript實(shí)現(xiàn)各種排序的代碼詳解
這篇文章給大家介紹了js實(shí)現(xiàn)各種排序功能,包括冒泡排序,選擇排序和插入排序,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧2017-08-08