Ми хочемо зробити цей проєкт з відкритим кодом доступним для людей у всьому світі.

Допоможіть перекласти цей підручник вашою мовою!

назад до уроку

Знайдіть пари ВВ-тегів

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