2015-02-23 3 views
2

У меня есть некоторые проблемы с поиском регулярных выражений. Я хотел бы разобрать все смайлики, кроме bbcode [code].Как анализировать регулярное выражение bbcode?

, например:

[code] :D :D :D :D [/code] 
:D :D :D 

Моя регулярное выражение необходимо соответствие три: D из BBcode.

Я пробовал (\[code\](.*?)\[\/code\]) в соответствии с bbcode.

Но я не нашел, кроме этого блока. Я нахожу в google, как сделать исключение с (^(\[code\](.*?)\[\/code\])*, но не работает ....

Итак, мой первый вопрос: как соответствовать всем smilley, которые любят :D? и как за исключением группы (bbcode) в регулярном выражении?

Спасибо за вашу помощь

ответ

2

Это, я думаю, должен сделать для вас.

(:D)(?=[\s\S]*?\[code\][\s\S]*?\[\/code\]+|(?![\s\S]*?\[\/code\])) 

Реализация выборки, которая преобразует все :D «s вне кодовых меток для ссылок:

document.getElementById('tekt').value = document.getElementById('tekt').value.replace(/(:D)(?=[\s\S]*?\[code\][\s\S]*?\[\/code\]+|(?![\s\S]*?\[\/code\]))/igm,""); 

JSFiddle Demo.

+0

Спасибо это хорошо работает. Большое спасибо за ваш быстрый ответ. – sylvain

0

Я все, у меня есть некоторые проблемы, чтобы построить свое регулярное выражение. Теперь мне нужно, чтобы соответствовать всем smilley, которые выглядят как: D, за исключением между <code></code> и <img />

Я не понимаю концепцию исключения в группе. Я нашел (бар?!) *

регулярное выражение:.

(:D)(?=[\s\S]*?\<code\>[\s\S]*?\<\/code\>+|(?![\s\S]*?\<\/code\>))|(\<img (?!:D).+ \/>) 

шаблон Test

:D :D :D 

[quote="toto"]:D  :D  :D  :D  :D  :D  :D [/quote] 

[spoiler="ygfdhy :D  :D  :D  :D "] :D  :D  :D  :D  :D  :D  :D [/spoiler] 

[hide] :D  :D  :D  :D  :D  :D  :D [/hide] 

<code> :D :D :D :D :D :D :D </code> 

<code> :D :D :D :D :D :D :D </code> 

<img src="#" data-sceditor-emoticon=":D" alt=":D" title=":D" /> 

<img src=#" data-sceditor-emoticon=":D" alt=":D" title=":D" /> 

Regex101

У меня есть 2 проблемы:

  • я могу Нет соответствующего smilley в теге img
  • я не не ровня только один

Благодарим за терпение и опыт

+0

Я нашел почти правильное регулярное выражение: '(: D) (?! ((? = \ W * [^ <] * <(?! code))) | (? = \ ] \>))' but i всегда совпадают в последнем теге img ... Я не понимаю, почему! Как я могу зацикливаться на всех тегах img? – sylvain

+0

Я поднимаю сообщение, у кого есть проблема, чтобы исправить мою проблему? Я действительно близок к цели. Благодаря ! – sylvain

Смежные вопросы