C# 需要帮助为我的白名单创建此正则表达式吗

C# 需要帮助为我的白名单创建此正则表达式吗,c#,asp.net,regex,C#,Asp.net,Regex,我正在使用一个丰富的html编辑器,我想做一个白名单的东西,应该被允许在 我听说你应该使用白名单而不是黑名单,因为这样做比尝试制作黑名单更容易 我甚至看到一些例子,人们可以在css样式的部分中隐藏脚本标记 这是编辑器生成的示例 <span _moz_dirty="" style="font-weight: bold;"> aaaaaaaaaaaa <br _moz_dirty=""/> ffffffffffff <br _moz_dirty=""/> <

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

但它不起作用。我试着从我给你的示例中改变一些东西,但什么都没有出现。

回答这个问题:

摆脱你的反斜杠?

你使用的是方括号,它创建了一个字符类;您应该使用括号来表示另一种选择,即

font-(style|weight)
+是多余的(您不需要一个或多个,对吗?。
我觉得你的正则表达式应该是

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

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

而应该在字符串前面加一个@。正则表达式已经不容易阅读了;但是带有转义反斜杠的正则表达式很难阅读,这一点很好。你应该用@符号。读“\\s”一点也不好玩。你的正则表达式很合适。我只是在这里装模作样。并不是说您正在捕获,但最好记住()=捕获组。对非捕获组使用(?:)。(?:style | weight)也可以使用隐式组选项。
font-(style|weight)
Regex regex = new Regex(@"font-(style|weight)\s*:\s*(bold|italic)\s*;\s*");