⊗jsSpRENPB 132 of 294 menu

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'
bnmsenbycs