Нужна помощь, чтобы сделать это регулярное выражение для моего белого списка - PullRequest
4 голосов
/ 18 сентября 2009

Я использую богатый html-редактор и хочу сделать белый список того, что должно быть разрешено.

Я слышал, что вы должны использовать белый список вместо черного списка, так как это легче сделать, чем попытаться создать черный список.

Я даже видел несколько примеров, когда люди могли скрыть тег script в части стиля 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 ]

2 голосов
/ 18 сентября 2009

Вы используете квадратные скобки, которые создают класс персонажа; вместо этого вы должны использовать круглые скобки для обозначения альтернативы, т.е.

font-(style|weight)

+ избыточен (вам не нужен один или более , верно?).
Я думаю, что ваши регулярные выражения должны быть что-то вроде

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

Еще одна вещь: '^' указывает начало строки / строки, поэтому вы должны удалить ее.

1 голос
/ 18 сентября 2009
0 голосов
/ 18 сентября 2009

избежать вашей обратной косой черты?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...