La méthode exec dans les expressions régulières JavaScript
La méthode exec effectue une recherche dans une
chaîne. Elle renvoie la sous-chaîne trouvée
et ses groupes de capture. Chaque
appel ultérieur de cette méthode
commencera la recherche à partir de l'endroit
où la précédente
sous-chaîne trouvée s'est terminée.
Regardons un exemple. Supposons que nous ayons la chaîne suivante :
let str = '12 34 56';
Supposons que nous ayons l'expression régulière suivante :
let reg = /\d+/g;
Appelons séquentiellement notre méthode pour notre chaîne :
let res1 = reg.exec(str);
console.log(res1[0]); // 12
let res2 = reg.exec(str);
console.log(res2[0]); // 34
let res3 = reg.exec(str);
console.log(res3[0]); // 56
Après trois appels, comme il n'y a
plus de correspondances dans notre
chaîne avec l'expression régulière,
le prochain appel de la méthode renverra
null :
let res4 = reg.exec(str);
console.log(res4); // null
Cette particularité de la méthode est pratique à utiliser dans une boucle :
let str = '12 34 56';
let reg = /\d+/g;
let res;
while (res = reg.exec(str)) {
console.log(res); // [12], [34], [56]
}
Il est possible de trouver non seulement la correspondance, mais aussi de la décomposer en groupes de capture :
let str = '12 34 56';
let reg = /(\d)(\d)/g;
let res;
while (res = reg.exec(str)) {
console.log(res); // [12, 1, 2], [34, 3, 4], [56, 5, 6]
}
Soit la chaîne suivante :
let str = '12:37:57 15:48:58 17:59:59';
Trouvez-y toutes les sous-chaînes avec l'heure et pour chaque correspondance trouvée, décomposez les heures, les minutes et les secondes en groupes de capture.