【问题标题】:Simple javascript regex help needed需要简单的 javascript 正则表达式帮助
【发布时间】:2011-09-23 12:18:16
【问题描述】:

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

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

这将用 table、tr 和 td 替换 [quote]。 (以及 /td、/tr 和 /table 的 [/quote])

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

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

它搞砸了,(当它应该将第二个引号与第一个 /quote 匹配并且第一个引号与最后一个 /quote 匹配时,将第一个引号与第一个 /quote 匹配)

如何编辑正则表达式使其在两个示例中都有效?

非常感谢,

詹姆斯

【问题讨论】:

  • 一个单元格表格?我以为我们已经放弃了大约公元 2000 年的那些。 :(

标签: javascript regex parsing bbcode


【解决方案1】:

Regex 不是解析嵌套结构化文本的好选择。 JavaScript BBCode 解析器见this question

【讨论】:

  • 我正在使用 Javascript :((预览邮箱)
【解决方案2】:

试试这个:

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

【讨论】:

  • 您的意思是引号还是文字 [quote](作为字符串)?
【解决方案3】:

我创建了一个示例 JavaScript BBCode 解析器来处理这种情况。我想我解决了这种情况,因为 JavaScript 的字符串替换函数可以接受另一个函数,所以你可以让你的解析器递归地处理输入的较小部分。然而,我已经有一段时间没有看过它了。您可以在此处查看它的运行情况并在同一页面上下载它(下载链接在标题下方 - “您可以在此处下载 JavaScript 模块。”):

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多