我正在使用一个丰富的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*"
但它不起作用。我试图改变我给你的样本,但没有任何东西出现。
答案 0 :(得分:2)
您正在使用方括号,它会创建一个字符类;您应该使用括号来表示替代方案,即
font-(style|weight)
+是多余的(你不想要一个或更多,对吗?) 我认为你的正则表达式应该是
Regex regex = new Regex(@"font-(style|weight)\s*:\s*(bold|italic)\s*;\s*");
另一件事:'^'表示行/字符串的开头,所以你应该删除它。
答案 1 :(得分:1)
答案 2 :(得分:0)
逃避你的反斜杠?