Жадность квантификаторов. Регулярные выражения

Все квантификаторы являются "жадными". При поиске соответствия ищется самая длинная подстрока, соответствующая шаблону, и не учитываются более короткие соответствия. Рассмотрим это на примере. Получим содержимое всех тегов <b>, вместе с тегами:

let p = /<b>.*<\/b>/gi;
let str = '<b>Text1</b>Text2<b>Text3</b>';
console.log( str.match(p) );
// [ '<b>Text1</b>Text2<b>Text3</b>' ]

Вместо желаемого результата мы получили полностью строку. Чтобы ограничить "жадность", необходимо после квантификатора указать символ ?:

let p = /<b>.*?<\/b>/gi;
let str = '<b>Text1</b>Text2<b>Text3</b>';
console.log( str.match(p) );
// [ '<b>Text1</b>', '<b>Text3</b>' ]

Этот код выведет то, что мы искали.

Учебник по Node.js и JavaScript
Учебник по JavaScript (Node.js) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов