АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP или фреймворки. Сегодня последний день для записи! Жми!
⊗jsSpRENPB 132 of 294 menu
Долгожданный Бесплатный курс по выкладке сайта на хостинг. МЫ УЖЕ НАЧАЛИ! Присоединяйтесь к нам!

Несохраняющие скобки в регулярках JavaScript

Скобки ( ) выполняют две функции - группировка символов и функцию кармана. А что делать, если нам нужно сгруппировать, но в карман не класть? Для решения такой проблемы придуманы специальные несохраняющие скобки (?: ) - они группируют, но не кладут в карман.

Пример

В следующем примере первые скобки нам нужны для группировки, а вторые - для кармана. Однако, и те, и другие скобки сохраняют данные в карман:

let str = 'abab123'; let res = str.match(/(ab)+([1-9]+)/);

В результате в наших карманах будет следующее:

console.log(res[0]); // выведет 'abab123' console.log(res[1]); // выведет 'ab' console.log(res[2]); // выведет '123'

Пример

Сделаем так, чтобы первая пара скобок только группировала, но не клала в карман:

let str = 'abab123'; let res = str.match(/(?:ab)+([1-9]+)/);

В результате в первом кармане будет наше число:

console.log(res[1]); // выведет '123'
enru