我正在寻找开发一个正则表达式,删除所有html标签的名称,脚本标签,脚本标签中的所有内容(基本上所有的javascript代码),以及任何HTML代码 喜欢等等,字符串中没有html或javascript代码应该通过。 更新:
我认为质疑不太清楚可能会更清楚。
我希望字符串中不允许使用'<' and '>'
以及;,# ...
等任何特殊字符。我不关心是否有"<html>" or "<body> "
等标记“我只是想要返回false以便用户根本无法输入任何标记,我也想阻止所有的javascript,所以我假设我不允许<,>
脚本标记不通过而js代码不会通过?
所以正则表达式应该不允许包含任何&lt;,&gt;以及;#@$%& etc
之类的其他特殊字符,以便除了标记之外的其他HTML代码也被阻止...例如
答案 0 :(得分:1)
要验证HTML元素或String是否包含HTML标记,请检查以下JavaScript函数:
function containsHTMLTags(str)
{
if(str.match(/([\<])([^\>]{1,})*([\>])/i)==null)
return false;
else
return true;
}
该功能使用黑名单过滤。
参考文献:http://www.hscripts.com/scripts/JavaScript/html-tag-validation.php
答案 1 :(得分:1)
^[^<>;#]*$
如果字符串匹配该正则表达式,则它不包含括号中的字符。我希望我能理解你的问题。
答案 2 :(得分:0)
不要使用正则表达式。
您无法使用textContent
或innerText
,因为至少前者会返回script
元素的正文。
如果我只支持较新的浏览器并且可以访问(或 shimmed )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 '';
}, '');
}
答案 3 :(得分:0)
Regex.Replace(html,@“] &gt; [\ s \ S] ?|&lt; [^&gt;] +&gt;”,“”,RegexOptions.IgnoreCase).Trim ();
这里的html是一个字符串,其中包含一个页面的html,需要删除html和脚本标记