⊗jsSpRENPB 132 of 294 menu

Paranteze care nu captează în expresiile regulate JavaScript

Parantezele ( ) îndeplinesc două funcții - gruparea caracterelor și funcția de captură. Și ce să faci dacă trebuie să grupăm, dar să nu captăm? Pentru a rezolva această problemă au fost create parantezele care nu captează (?: ) - ele grupează, dar nu capturează.

Exemplu

În exemplul următor, primele paranteze ne sunt necesare pentru grupare, iar celelalte - pentru captură. Cu toate acestea, ambele tipuri de paranteze salvează date în captură:

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

Ca rezultat, în capturile noastre va fi următoarele:

console.log(res[0]); // va afișa 'abab123' console.log(res[1]); // va afișa 'ab' console.log(res[2]); // va afișa '123'

Exemplu

Să facem astfel încât prima pereche de paranteze să doar grupeze, dar să nu captureze:

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

Ca rezultat, în prima captură va fi numărul nostru:

console.log(res[1]); // va afișa '123'
uzlnlbnfrtr