2016-05-11 70 views
-1

我有JavaScript字符串組合這樣的,的Javascript更換招

str = "<div>xyz 123 <rd> </div>" 
or 
str = "sample text <abc>" 
or 
str = "Text <input type="text" /> new value <bla> ." 

我一定要找到無效的標記(沒有結束標記),如(<rd>, <abc>, <bla>)了,需要更換像&lt;bla&gt;

有人能幫助解決此問題。完全使用JavaScript。

+1

請出示你已經嘗試了什麼。目前這是一個'爲我寫'我的代碼'的請求,這將是downvoted和關閉。另外,你將如何確定什麼是/無效?通過你的邏輯(任何沒有結束標籤的東西都應該被刪除),因爲它沒有結束標籤,所以''元素將被刪除 - 但是完全有效。 –

+0

有效 – Antguider

+0

這就是我的觀點。 –

回答

1

使用jQuery你可以做這樣的事情與replace()

var str = `<div>xyz 123 <rd> </div> 
 
sample text <abc> 
 
Text <input type="text"/> new value <bla>`; 
 

 

 
console.log(
 
    str.replace(/<([a-z]+)([^>]*[^\/])?>(?![\s\S]*<\/\1)/gi, function(m) { 
 
    return $('<div/>').text(m).html(); // encoding matched text 
 
    }) 
 
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>


Regex explanation here

Regular expression visualization

0幫助

請參考以下答案HTML編碼:HTML-encoding lost when attribute read from input field

+0

優秀:)。非常感謝 – Antguider

+0

@JqueryRock:很高興幫助:) –