24

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

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

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

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

4

2 回答 2

47

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

于 2008-12-12T20:24:55.820 回答
4

我迟到了,但无论如何我都会发布正则表达式。

'[b]one[/b] two [b]three[/b]'.replace( /\[b\](.+?)\[\/b\]/g, '<b>$1</b>' );
于 2008-12-12T20:30:39.770 回答