Знайдіть пари ВВ-тегів
ВВ-тег має вигляд [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]
, бо зазвичай слеш завершує вираз.