Nem rögzítő zárójelek a JavaScript reguláris kifejezéseiben
A ( ) zárójelek két funkciót töltenek be -
a karakterek csoportosítását és a zárójel (capturing group) funkciót.
De mit tegyünk, ha csoportosítanunk kell,
de nem akarunk zárójelbe (capturing group) helyezni?
A probléma megoldására találták ki a speciális
nem rögzítő zárójeleket (?: )
- ezek csoportosítanak, de nem helyeznek zárójelbe (capturing group).
Példa
A következő példában az első zárójelek a csoportosításhoz kellenek, az másodikak pedig a zárójelhez (capturing group). Azonban mindkét zárójel típus a zárójelbe (capturing group) helyezi az adatokat:
let str = 'abab123';
let res = str.match(/(ab)+([1-9]+)/);
Ennek eredményeképpen a zárójeleinkben (capturing groups) a következők lesznek:
console.log(res[0]); // kiírja 'abab123'
console.log(res[1]); // kiírja 'ab'
console.log(res[2]); // kiírja '123'
Példa
Változtassuk meg úgy, hogy az első zárójelpár csak csoportosítson, de ne helyezzen zárójelbe (capturing group):
let str = 'abab123';
let res = str.match(/(?:ab)+([1-9]+)/);
Ennek eredményeképpen az első zárójelben (capturing group) a számunk lesz:
console.log(res[1]); // kiírja '123'