Есть ли способ использовать ungreedy matching в JavaScript для регулярных выражений?

интересно, есть ли способ использовать ungreedy matching в JavaScript? Я попробовал U modifer, но он, похоже, не работает.

Я хочу написать небольшой парсер BBCode в JavaScript, но без ungreedy соответствия невозможно (по крайней мере, насколько я вижу) сделать что-то вроде этого:

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

но такая замена была бы хорошей, так как нет необходимости проверять правильность HTML. Незамкнутые наценки останутся простым текстом.

2 ответов


можно использовать ? после * или + чтобы сделать его ungreedy, например (.*?)


Я опаздываю, но я все равно отправлю регулярное выражение.

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