以防万一您想在 .NET 中使用正则表达式来去除 HTML 标记,以下内容似乎在此页面的源代码上运行良好。它比此页面上的其他一些答案更好,因为它会查找实际的 HTML 标签,而不是盲目地删除 和 之间的所有<
内容>
。回到 BBS 时代,我们输入<grin>
了很多而不是:)
,因此删除<grin>
不是一种选择。:)
此解决方案仅删除标签。它不会在可能很重要的情况下删除这些标签的内容——例如,脚本标签。您会看到脚本,但脚本不会执行,因为脚本标签本身已被删除。删除 HTML 标记的内容非常棘手,实际上要求HTML 片段格式正确......
还要注意RegexOption.Singleline
选项。这对于任何 HTML 块都非常重要。因为在一行中打开 HTML 标签并在另一行中关闭它并没有错。
string strRegex = @"</{0,1}(!DOCTYPE|a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdi|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|main|map|mark|menu|menuitem|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|track|tt|u|ul|var|video|wbr){1}(\s*/{0,1}>|\s+.*?/{0,1}>)";
Regex myRegex = new Regex(strRegex, RegexOptions.Singleline);
string strTargetString = @"<p>Hello, World</p>";
string strReplace = @"";
return myRegex.Replace(strTargetString, strReplace);
我并不是说这是最好的答案。这只是一个选择,对我来说效果很好。