此问题已在此处有答案:
Any good javascript BBCode parser? [closed](3个答案)
昨天关门了。
我有一个简单的正则表达式:
\[quote\](.*?)\[\/quote\]
将[quote]替换为table、tr和td。(和[/quote] by /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条答案
按热度按时间uqjltbpv1#
正则表达式不是解析嵌套结构化文本的好选择。JavaScript BBCode解析器见this question
4c8rllxm2#
试试这个:
c90pui9n3#
我创建了一个示例JavaScript BBCode解析器来处理这种情况。我想我避开了这种情况,因为JavaScript的字符串替换函数可以接受另一个函数,所以你可以让你的解析器递归地处理更小的输入部分。不过,我已经有一段时间没看了。你可以在这里看到它的实际效果,并在同一个页面上下载它(下载链接在标题下-“你可以在这里下载JavaScript模块。”):
http://patorjk.com/bbcode-previewer/