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

StackOverflow https://stackoverflow.com/questions/364014

Вопрос

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

'[b]one[/b] two [b]three[/b]'.replace( /\[b\](.+?)\[\/b\]/g, '<b>$1</b>' );
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top