正则表达式,用于从字符串中删除包含内容和 HTML 代码的所有标记

regular expression to remove all tags with content and html code from a string

本文关键字:代码 HTML 用于 字符串 包含内 删除 正则表达式      更新时间:2023-09-26

我希望开发一个正则表达式,该表达式删除所有带有名称,脚本标签,脚本标签中的所有内容(基本上是所有javascript代码)和任何html代码的html标签像 etc 一样 ,字符串中没有 HTML 或 JavaScript 代码应该传递。更新:

我认为被质疑的人不是那么清楚,也许这应该更清楚。

我希望字符串中不允许使用'<' and '>'以及任何特殊字符,如;,# ...等。我不在乎是否有像"<html>" or "<body> "等标签"我只想返回 false,以便用户根本无法输入任何标签,我也想阻止所有 javascript,所以我假设如果我不允许脚本标签不会通过并且 js 代码不会通过<,>

因此,正则表达式应该不允许包含任何<、>和其他特殊字符,例如;#@$%& etc,以便除了标签之外的其他 html 代码也被阻止......例如&nbsp;

要验证 HTML 元素或字符串是否包含 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

^[^<>;#]*$

如果字符串与该正则表达式匹配,则不包含括号中的字符。我希望我能很好地理解你的问题。

不要为此使用正则表达式。

不能使用 textContentinnerText,因为至少前者返回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 '';
    }, '');
}

jsFiddle。

Regex.Replace(html, @"]>[''s''S]?|<[^>]+>", ", RegexOptions.IgnoreCase).修剪();

这里 html 是一个字符串,具有需要从中删除 HTML 和脚本标签的页面的 HTML