Ikke-opbevarende parenteser i JavaScript regulære udtryk
Parenteser ( ) udfører to funktioner -
gruppering af tegn og lomme-funktion. Men
hvad gør vi, hvis vi har brug for at gruppere,
men ikke lægge i lommen?
Til at løse dette problem er der specielle
ikke-opbevarende parenteser (?: )
- de grupperer, men lægger ikke i lommen.
Eksempel
I det følgende eksempel har vi brug for de første parenteser til gruppering, og de anden - til lommen. Dog gemmer begge parenteser data i lommen:
let str = 'abab123';
let res = str.match(/(ab)+([1-9]+)/);
Som et resultat vil følgende være i vores lommer:
console.log(res[0]); // vil udskrive 'abab123'
console.log(res[1]); // vil udskrive 'ab'
console.log(res[2]); // vil udskrive '123'
Eksempel
Lad os sikre, at det første sæt parenteser kun grupperer, men ikke lægger i lommen:
let str = 'abab123';
let res = str.match(/(?:ab)+([1-9]+)/);
Som et resultat vil vores tal være i den første lomme:
console.log(res[1]); // vil udskrive '123'