[英]regular expression to remove all tags with content and html code from a string
我正在尋找開發一個正則表達式,它刪除所有 html 標簽,其中包含名稱、腳本標簽、腳本標簽中的所有內容(基本上所有 javascript 代碼),以及任何 html 代碼等,只是字符串中沒有 html 或 javascript 代碼應該經過。 更新:
我認為被質疑的不是那么清楚,可能這應該更清楚。
我希望字符串中不允許使用'<' and '>'
以及任何特殊字符,例如;,#...
等。我不在乎是否有"<html>" or "<body> "
類的標簽"<html>" or "<body> "
等”我只想返回 false 以便用戶根本無法輸入任何標簽,我還想阻止所有 javascript 所以我假設如果我不允許<,>
腳本標簽不會通過並且 js 代碼不會通過?
因此,正則表達式應該不允許包含任何 <、> 和其他特殊字符,如;#@$%& etc
,以便除標簽之外的其他 html 代碼也被阻止...例如
要驗證 HTML 元素或字符串是否包含 HTML 標簽,請檢查以下 JavaScript function:
function containsHTMLTags(str)
{
if(str.match(/([\<])([^\>]{1,})*([\>])/i)==null)
return false;
else
return true;
}
function 使用黑名單過濾。
參考資料: http://www.hscripts.com/scripts/JavaScript/html-tag-validation.php
^[^<>;#]*$
如果字符串與該正則表達式匹配,則它不包含括號中的字符。 我希望我能很好地理解你的問題。
不要為此使用正則表達式。
您不能使用textContent
或innerText
,因為至少前者會返回script
元素的主體。
如果我只支持較新的瀏覽器並且可以訪問(或填充) Array.prototype.indexOf()
、 Array.prototype.reduce()
和Array.prototype.map()
,這就是我可能使用的...
var getText = function me(node, excludeElements) {
if (!excludeElements instanceof Array) {
excludeElements = [];
} else {
excludeElements.map(function(element) {
return element.toLowerCase();
});
}
return [].slice.call(node.childNodes).reduce(function(str, node) {
var nodeType = node.nodeType;
switch (nodeType) {
case 3:
return str + node.data;
case 1:
if (excludeElements.indexOf(node.tagName.toLowerCase()) == -1) {
return str + me(node, excludeElements);
}
}
return '';
}, '');
}
Regex.Replace(html, @"] >[\s\S] ?|<[^>]+>", "", RegexOptions.IgnoreCase).Trim();
這里 html 是一個字符串,其中包含需要從中刪除 html 和腳本標簽的頁面的 html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.