需要简单的javascript正则表达式帮助

时间:2011-09-23 12:18:17

标签: javascript regex parsing bbcode

我有一个简单的正则表达式:

\[quote\](.*?)\[\/quote\]

将用table,tr和td替换[quote]。 (和[/ quote] / td,/ tr和/ table)

它适用于同一字符串中的多个单独引号:

IE:

[quote]
Person 1
[/quote]
Person 3 talking about a quote

[quote]
Person 2
[/quote]
Person 3 talking about another quote.

但是当它试图在同一个字符串中替换多个(非单独的)引用时:

IE:

[quote]
[quote]
Person 1
[/quote]
Person 2 quoting person 1
[/quote]
Person 3 quoting person 2 and 1

它搞砸了,(将第一个报价与第一个/引用匹配,当它应该匹配第二个报价到第一个/引用和第一个报价到最后一个/引用时)

我如何编辑正则表达式以便在两个示例中都有效?

非常感谢,

詹姆斯

3 个答案:

答案 0 :(得分:2)

正则表达式不是解析嵌套结构化文本的好选择。有关JavaScript BBCode解析器的信息,请参阅this question

答案 1 :(得分:0)

试试这个:

\[quote\]{1,}(.*?)\[\/quote\]

答案 2 :(得分:0)

我创建了一个处理这种情况的JavaScript BBCode解析器示例。我认为我解决了这种情况,因为JavaScript的字符串替换函数可以接受另一个函数,所以你可以使你的解析器递归地处理输入的较小部分。但是,我看了它已经有一段时间了。你可以在这里看到它并在同一页面上下载(下载链接在标题下 - “你可以在这里下载JavaScript模块。”):

http://patorjk.com/bbcode-previewer/