【问题标题】:Is there a way to use ungreedy matching in JavaScript for regular expressions?有没有办法在 JavaScript 中对正则表达式使用不贪婪的匹配?
【发布时间】:2008-12-12 20:22:18
【问题描述】:

我想知道是否有办法在 JavaScript 中使用不贪婪匹配?我尝试了 U 修饰符,但它似乎不起作用。

我想用 JavaScript 编写一个小的 BBCode 解析器,但是如果没有不贪婪的匹配,就不可能(至少在我看来)做这样的事情:

'[b]one[/b] two [b]three[/b]'.replace( /\[b\](.*)\[\/b\]/, '<b>$1</b>' );

但是这样的替换会很好,因为那时不需要检查 HTML 的有效性。未闭合的标记将保持简单的文本。

【问题讨论】:

    标签: javascript regex bbcode non-greedy


    【解决方案1】:

    您可以在*+ 之后使用? 使其不贪婪,例如(.*?)

    【讨论】:

    • 难以置信,但它确实有效!谢谢。在其他环境中,可以使用标志 /u(不贪婪)。但是对于 javascript 方法不可用(我认为 nodejs 方法除外)
    • 请你解释一下这个技巧背后的逻辑吗?
    【解决方案2】:

    我迟到了,但我还是会发布正则表达式。

    '[b]one[/b] two [b]three[/b]'.replace( /\[b\](.+?)\[\/b\]/g, '<b>$1</b>' );
    

    【讨论】:

      猜你喜欢
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 2011-01-26
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多