Regex修复GetSafeHtmlFragment x_前缀



使用消毒剂时。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")

相关内容

  • 没有找到相关文章

最新更新