Comment accéder aux parenthèse capturentes dans une regex JavaScript?

Je veux trouver une partie d’une chaîne à l’aide d’une expression régulière, puis accéder à la sous-chaîne entre parenthèses :

var str = "hello world_xyz"; // je veux "xyz"

var tab = /(?:^|\s)world_(.*?)(?:\s|$)/.exec(str);

console.log(tab); // Affiche: [" world_xyz", "xyz"] .. Jusqu'ici, tout va bien.
console.log(tab[1]); // Affiche: undefined  (???)
console.log(tab[0]); // Affiche: world_undefined (!!!)

Que dois-je faire ?

ton code fonction correctement, voici ce que s’affiche:

[
" world_xyz",
" xyz"
]
xyz
world_xyz

Je sais pas où le problème.

Bonjour @camelia,

au lieu d’utiliser exec(), utiliser match(). Voici un exemple:

var str = "hello world_xyz";
var arr = str.match(/\bworld_(.*?)\b/);
console.log(arr[0] + " " + arr[1]);

Cela affiche:

world_xyz xyz

N’oubliez pas le \b qui joue le rôle de délimiteur.