⊗jsSpRENPB 132 of 294 menu

Nezachytávající závorky v regulárních výrazech JavaScriptu

Závorky ( ) plní dvě funkce - seskupování znaků a funkci zachytávání. A co dělat, když potřebujeme seskupit, ale nechceme zachytávat? Pro řešení tohoto problému byly vytvořeny speciální nezachytávající závorky (?: ) - ty seskupují, ale nezachytávají.

Příklad

V následujícím příkladu potřebujeme první závorky pro seskupení a druhé - pro zachytávání. Avšak oba typy závorek ukládají data do zachytávacích skupin:

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

V důsledku budou naše zachytávací skupiny obsahovat následující:

console.log(res[0]); // vypíše 'abab123' console.log(res[1]); // vypíše 'ab' console.log(res[2]); // vypíše '123'

Příklad

Upravíme výraz tak, aby první pár závorek pouze seskupoval, ale nezachytával:

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

V důsledku bude v první zachytávací skupině naše číslo:

console.log(res[1]); // vypíše '123'
uzluzcsvmsby