使用消毒剂时。GetSafeHtmlFragment从微软的AntiXSSLibrary 4.0,我注意到它改变了我的HTML片段:
<pre class="brush: csharp">
</pre>
:
<pre class="x_brush: x_csharp">
</pre>
遗憾的是,他们的API不允许我们禁用此行为。因此,我想使用正则表达式(c#)来修复和替换字符串,如"x_anything"到"anything",出现在class="属性内。
谁能帮助我与RegEx做到这一点?
感谢UPDATE -这对我有效:
private string FixGetSafeHtmlFragment(string html)
{
string input = html;
Match match = Regex.Match(input, "class="(x_).+"", RegexOptions.IgnoreCase);
if (match.Success)
{
string key = match.Groups[1].Value;
return input.Replace(key, "");
}
return html;
}
我不是100%确定c# @(逐字符号),但我认为这应该匹配任何class=""
内部的x_
,并将其替换为空字符串:
string input = 'class="x_something"';
Match match = Regex.Match(input, @'class="(x_).+"',
RegexOptions.IgnoreCase);
if (match.Success)
{
string key = match.Groups[1].Value;
string v = input.Replace(key,"");
}
这篇文章已经发表一年多了,但这里有一些正则表达式,你可以使用它来删除最多三个类实例。我相信有更干净的方法,但它可以完成工作。
VB。Net代码:
Regex.Replace(myHtml, "(<w+b[^>]*?b)(class="")x[_]([a-zA-Z]*)( )?(?:x[_])?([a-zA-Z]*)?( )?(?:x[_])?([^""]*"")", "$1$2$3$4$5$6$7")