需要帮助才能为我的whiteList制作此正则表达式

时间:2009-09-18 03:39:04

标签: c# asp.net regex

我正在使用一个丰富的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*"

但它不起作用。我试图改变我给你的样本,但没有任何东西出现。

3 个答案:

答案 0 :(得分:2)

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

font-(style|weight)

+是多余的(你不想要一个或更多,对吗?) 我认为你的正则表达式应该是

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

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

答案 1 :(得分:1)

答案 2 :(得分:0)

逃避你的反斜杠?