如何解析bbcode正则表达式?

时间:2015-02-23 09:22:22

标签: javascript regex parsing bbcode

我找一个正则表达式有点麻烦。 我想解析所有表情符号,除了bbcode [code]。

例如:

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

我的正则表达式必须与bbcode中的三个匹配:

我尝试(\[code\](.*?)\[\/code\])来匹配bbcode。

但我没有发现除了这个街区以外的情况。我在google上发现如何使用(^(\[code\](.*?)\[\/code\])*进行例外处理但不能正常工作......

所以我的第一个问题是:如何匹配所有看起来像:D的smilley? 除了正则表达式中的一组(bbcode)之外怎么办?

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

我认为,这应该适合你。

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

将所有:D外部代码标记转换为链接的示例实现:

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

JSFiddle Demo.

答案 1 :(得分:0)

我是每个人, 构建我的正则表达式时遇到一些问题。 现在我需要匹配除<code></code><img />

之外的所有smilley:D

我不理解小组中的异常概念。我找到了(?!酒吧)。*

正则表达式:

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

测试模板

   :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

我有两个问题:

  • 我不能在img标签中找到匹配的smilley
  • 我不会只匹配一个

感谢您的耐心和专业知识