在ASP.Net文本区域中仅允许HTML标记的子集

在ASP.Net文本区域中仅允许HTML标记的子集,html,asp.net,regex,editor,Html,Asp.net,Regex,Editor,我需要在我的文本区域中允许某些HTML标记,而忽略所有其他标记。 例如,将被允许,但是如果存在,我希望标签被其内部文本替换 一些文本将是:一些文本 而一些文本将是:一些文本 我还希望从所有允许的标记中提取所有属性 这在正则表达式中可能吗 更新:我尝试了这个反向前瞻]*)?>但它与整个文档匹配。如果有人能纠正这种消极的前瞻性,那就太好了。我找到了解决办法 万一将来有人需要,我就是这么做的 // remove HTML comments Regex regex = n

我需要在我的文本区域中允许某些HTML标记,而忽略所有其他标记。 例如,将被允许,但是如果

存在,我希望标签被其内部文本替换

一些文本将是:一些文本 而

一些文本将是:一些文本

我还希望从所有允许的标记中提取所有属性

这在正则表达式中可能吗


更新:我尝试了这个反向前瞻
]*)?>
但它与整个文档匹配。如果有人能纠正这种消极的前瞻性,那就太好了。

我找到了解决办法

万一将来有人需要,我就是这么做的

        // remove HTML comments
        Regex regex = new Regex(@"<!--[^-]*-->", RegexOptions.IgnoreCase);
        input = regex.Replace(input, "");
        // remove unsupported tags
        regex = new Regex(@"</?((?!p|i|u|sup|sub|br|ol|li|a|b|/)|((p|i|sup|sub|br|ul|ol|li|a|b)[^<>\s]+))[^<>]*?>", RegexOptions.IgnoreCase);
        input = regex.Replace(input, "");
        // remove attribiutes
        regex = new Regex(@"(<[^\s]+)(\s[^<>]*)(>)", RegexOptions.IgnoreCase);
        input = regex.Replace(input, m => m.Groups[1].Value + m.Groups[3].Value);
        return input;
//删除HTML注释
Regex Regex=new Regex(@“”,RegexOptions.IgnoreCase);
输入=regex.Replace(输入“”);
//删除不支持的标记
正则表达式=新正则表达式(@“”,RegexOptions.IgnoreCase);
输入=regex.Replace(输入“”);
//删除属性
regex=newregex(@“()”,RegexOptions.IgnoreCase);
input=regex.Replace(input,m=>m.Groups[1].Value+m.Groups[3].Value);
返回输入;

html不是用正则表达式解析的。请使用html解析器。也要使您的问题具体化。现在您的问题很多,除非您对其进行编辑并使其更具体,否则我们将不得不关闭此ans。很难将其称为“解析”。不需要配对。我只需要检测单个标记。您将如何解析(请原谅)检测:
一些文本
?对于我来说,找到并删除所有打开的标记和所有关闭的标记就足够了。因为我不需要将打开标记与关闭标记配对,所以我认为正则表达式会适合。我想要一个匹配的正则表达式。这就是我所需要的!我尝试了这个否定的前瞻]*)?>但是它匹配了整个文档。