Знайдіть пари ВВ-тегів
ВВ-тег має вигляд [tag]...[/tag], де tag – це один з: b, url або quote.
Наприклад:
[b]текст[/b] [url]http://google.com[/url] ВВ-теги можуть бути вкладеними. Але тег не може бути вкладеним сам у себе, наприклад:
Може бути: [url] [b]http://google.com[/b] [/url] [quote] [b]текст[/b] [/quote] Не може бути: [b][b]text[/b][/b] Теги можуть мати розрив рядків, це допустимо:
[quote] [b]текст[/b] [/quote] Створіть регулярний вираз для пошуку всіх BB-тегів та їх вмісту.
Наприклад:
let regexp = /ваш регулярний вираз/прапорці; let str = "..[url]http://google.com[/url].."; alert( str.match(regexp) ); // [url]http://google.com[/url] Якщо теги вкладені, тоді необхідно шукати зовнішній тег (за бажанням, можна продовжити пошук всередині його вмісту):
let regexp = /ваш регулярний вираз/прапорці; let str = "..[url][b]http://google.com[/b][/url].."; alert( str.match(regexp) ); // [url][b]http://google.com[/b][/url] Відкриваючий тег – це \[(b|url|quote)].
Потім, щоб знайти все, до закриваючого тегу – використаємо вираз .*? з прапорцем s щоб знайти будь-які символи, включно з новим рядком, а потім додати зворотне посилання до закриваючого тегу.
Цілий вираз: \[(b|url|quote)\].*?\[/\1].
У дії:
let regexp = /\[(b|url|quote)].*?\[\/\1]/gs; let str = ` [b]hello![/b] [quote] [url]http://google.com[/url] [/quote] `; alert( str.match(regexp) ); // [b]hello![/b],[quote][url]http://google.com[/url][/quote] Зверніть увагу, що крім екранування [, нам необхідно екранувати слеш у закриваючому тегу [\/\1], бо зазвичай слеш завершує вираз.