是的,我知道使用 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 专家...
关于c# - 我的正则表达式有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2461194/