Есть ли способ использовать нежадное сопоставление в JavaScript для регулярных выражений?
-
21-08-2019 - |
Вопрос
Интересно, есть ли способ использовать нежадное сопоставление в 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>' );
Не связан с StackOverflow