【问题标题】:Need Help to make this regex for my whiteList需要帮助为我的白名单制作这个正则表达式
【发布时间】:2010-11-29 08:57:31
【问题描述】:

我正在使用一个丰富的 html 编辑器,我想为应该允许进入的内容创建一个白名单。

我听说你应该使用白名单而不是黑名单,因为这样做比尝试然后创建黑名单更容易。

我什至看到了一些例子,人们可以将脚本标签隐藏在 css 样式部分中。

这是编辑器生成的示例

<span _moz_dirty="" style="font-weight: bold;">
aaaaaaaaaaaa
<br _moz_dirty=""/>
ffffffffffff
<br _moz_dirty=""/>
<span _moz_dirty="" style="text-decoration: underline;">
fffffffff
<br _moz_dirty=""/>
</span>
<span _moz_dirty="" style="text-decoration: line-through;">
aaaaaaaaaa
<br _moz_dirty=""/>
<sub _moz_dirty="">
</sub>
<sup _moz_dirty="">ggg</sup>
<sub _moz_dirty="">
</sub>
</span>
</span>
<ol _moz_dirty="">
<li _moz_dirty="">1333</li>
<li _moz_dirty="">ff</li>
</ol>
<ul _moz_dirty="">
<li _moz_dirty="">ggg</li>
<li _moz_dirty="">ff</li>
</ul>
<div _moz_dirty="" style="margin-left: 40px;">
ffffff
<br _moz_dirty=""/>
</div>
fff
<br _moz_dirty=""/>
<br _moz_dirty=""/>
<a _moz_dirty="" href="http://">ffff</a>
<br _moz_dirty="" type="_moz"/>
<span _moz_dirty="" style="font-weight: bold;">
<span _moz_dirty="" style="text-decoration: underline;"/>
</span>

所以我想我的白名单将允许这些标签具有正确的类名

<span>
style - font-weight: bold, text-decoration: underline, margin-left, margin-right
<br />
<a>
<ol>
<ul>
<li>

所以我正在尝试制作一个可以弹出到我的 C# 代码中以仅检查这些标签的正则表达式。

所以我试着从风格的东西开始

style="[^font\-style|weight]+\s*:\s*[bold|italic]+\s*;\s*"

但它不起作用。我试图从我给你的样本中改变一些东西,但没有任何结果。

【问题讨论】:

    标签: c# asp.net regex


    【解决方案1】:

    您正在使用方括号,它创建了一个字符类;您应该改用括号来表示替代方案,即

    font-(style|weight)
    

    + 是多余的(您不想要一个或更多,对吧?)。
    我认为您的正则表达式应该类似于

    Regex regex = new Regex(@"font-(style|weight)\s*:\s*(bold|italic)\s*;\s*");
    

    另一件事:'^' 表示行/字符串的开头,所以你应该删除它。

    【讨论】:

    • 你的正则表达式是正确的。我只是在这里切碎。并不是说您正在捕获,但最好记住 () = 捕获组。将 (?:) 用于非捕获组。 (?:style|weight) 您还可以使用隐式组选项。
    【解决方案2】:

    转义反斜杠?

    【讨论】:

    • 宁可在字符串前加一个@。正则表达式已经不容易阅读了。但是带有转义反斜杠的正则表达式很难阅读。
    • 好点。您应该使用@ 符号。读“\\s”就没那么有趣了。
    【解决方案3】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多