⊗jsSpRENPB 132 of 294 menu

Parenthèses non capturantes dans les regex JavaScript

Les parenthèses ( ) remplissent deux fonctions - le regroupement de caractères et la fonction de groupe de capture. Mais que faire si nous avons besoin de regrouper, sans capturer dans un groupe ? Pour résoudre ce problème, des parenthèses non capturantes spéciales (?: ) ont été inventées - elles regroupent, mais ne capturent pas dans un groupe.

Exemple

Dans l'exemple suivant, les premières parenthèses nous sont nécessaires pour le regroupement, et les secondes - pour la capture. Cependant, les deux types de parenthèses capturent les données dans un groupe :

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

En conséquence, nos groupes de capture contiendront ce qui suit :

console.log(res[0]); // affichera 'abab123' console.log(res[1]); // affichera 'ab' console.log(res[2]); // affichera '123'

Exemple

Faisons en sorte que la première paire de parenthèses seulement regroupe, sans capturer dans un groupe :

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

En conséquence, notre nombre sera dans le premier groupe de capture :

console.log(res[1]); // affichera '123'
swfrhirobn