是的,我知道使用 RegEx 解析 HTML 通常是个坏主意,但除此之外,有人可以在这里解释错误:
string outputString = Regex.Replace(inputString, @"<?(?i:script|embed|object|frameset|frame|iframe|metalink|style|html|img|layer|ilayer|meta|applet)(.|\n)*?>", "");
if (outputString != inputString)
{
Console.WriteLine("unwanted tags detected");
}
它肯定会检测到预期的标签,例如:<script>和 <html> ,但它也拒绝我想要允许的字符串,例如 <B>Description</B> 和 <A href="http://www.mylink.com/index.html">A Link containing 'HTML'</A>
请您参考如下方法:
我认为问题是第一个问号
<?(?i:script
您可能想要匹配结束 html 标签中的前导“/”字符,对吧?我认为问号使“<”成为可选的(零个或一个匹配)。
我建议使用
<(/)?(?i:script
但我不是 RegEx 专家...
