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

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

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

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

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

12.12.2008 20:22:18
2 ОТВЕТА
РЕШЕНИЕ

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

32
12.12.2008 20:24:55
Невероятно, но это просто работает! Спасибо. в других условиях может быть использован флаг / u (ungreedy). Но для методов javascript это недоступно (за исключением методов nodejs, я думаю)
jmojico 19.10.2017 15:00:07

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

'[b]one[/b] two [b]three[/b]'.replace( /\[b\](.+?)\[\/b\]/g, '<b>$1</b>' );
2
12.12.2008 20:30:39