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

Интересно, есть ли способ использовать неровное соответствие в JavaScript? Я попробовал модификатор U, но он, похоже, не работает.

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

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

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

Ответы

Ответ 1

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

Ответ 2

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

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