Есть ли способ использовать несвязное соответствие в JavaScript для регулярных выражений? - PullRequest
16 голосов
/ 12 декабря 2008

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

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

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

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

Ответы [ 2 ]

26 голосов
/ 12 декабря 2008

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

2 голосов
/ 12 декабря 2008

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

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