Non-capturing parentheses in JavaScript regular expressions
Заградите ( ) имаат две функции -
групирање на знаци и функција на capturing group. А
што да правиме ако ни треба да групираме,
но да не зачуваме во capturing group?
За решавање на ваквиот проблем се направени специјални
non-capturing parentheses (?: )
- тие групираат, но не зачувуваат во capturing group.
Пример
Во следниот пример првите загради ни се потребни за групирање, а вторите - за capturing group. Сепак, и едните и другите загради зачувуваат податоци во capturing group:
let str = 'abab123';
let res = str.match(/(ab)+([1-9]+)/);
Како резултат во нашите capturing groups ќе имаме следново:
console.log(res[0]); // ќе испечати 'abab123'
console.log(res[1]); // ќе испечати 'ab'
console.log(res[2]); // ќе испечати '123'
Пример
Ајде да ги направиме првите загради да групираат само, но да не зачувуваат во capturing group:
let str = 'abab123';
let res = str.match(/(?:ab)+([1-9]+)/);
Како резултат во првиот capturing group ќе биде нашето число:
console.log(res[1]); // ќе испечати '123'