Non-capturing parentheses in JavaScript regular expressions

Заградите ( ) имаат две функции - групирање на знаци и функција на capturing group. А што да правиме ако ни треба да групираме, но да не зачуваме во capturing group? За решавање на ваквиот проблем се направени специјални non-capturing parentheses (?: ) - тие групираат, но не зачувуваат во capturing group.

Пример

Во следниот пример првите загради ни се потребни за групирање, а вторите - за capturing group. Сепак, и едните и другите загради зачувуваат податоци во capturing group:

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

Како резултат во нашите capturing groups ќе имаме следново:

javascriptconsole.log(res[0]); // ќе испечати 'abab123'
console.log(res[1]); // ќе испечати 'ab'
console.log(res[2]); // ќе испечати '123'

Пример

Ајде да ги направиме првите загради да групираат само, но да не зачувуваат во capturing group:

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

Како резултат во првиот capturing group ќе биде нашето число:

javascriptconsole.log(res[1]); // ќе испечати '123'