--- title: RegExp.prototype.exec() slug: Web/JavaScript/Reference/Global_Objects/RegExp/exec tags: - JavaScript - Méthode - Prototype - Reference - RegExp translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/exec original_slug: Web/JavaScript/Reference/Objets_globaux/RegExp/exec --- {{JSRef}} La méthode **`exec()`** exécute la recherche d'une correspondance sur une chaîne de caractères donnée. Elle renvoie un tableau contenant les résultats ou {{jsxref("null")}}. Si on souhaite uniquement savoir s'il y a une correspondance, on utilisera la méthode {{jsxref("RegExp.prototype.test()")}} ou la méthode {{jsxref("String.prototype.search()")}}. {{EmbedInteractiveExample("pages/js/regexp-prototype-exec.html")}} Les objets représentant des expressions rationnelles gardent un état en mémoire lorsqu'ils utilisent les marqueurs {{jsxref("RegExp.global", "global")}} ou {{jsxref("RegExp.sticky", "sticky")}} et ils gardent notamment en mémoire {{jsxref("RegExp.lastIndex", "lastIndex")}} à partir de la correspondance précédemment trouvée. Ainsi, `exec()` peut être utilisée afin de parcourir plusieurs correspondances dans un texte (avec des groupes capturants) (contrairement à {{jsxref("String.prototype.match()")}}). ## Syntaxe regexObj.exec(chaîne) ### Paramètres - `chaîne` - : La chaîne de caractères dans laquelle on recherche la correspondance décrite par l'expression rationnelle. ### Valeur de retour S'il y a une correspondance, la méthode `exec()` renvoie un tableau (contenant des éléments et deux propriétés `index` et `values`, cf. ci-après) et met à jour les propriétés de l'objet représentant l'expression rationnelle (notamment {{jsxref("RegExp.lastIndex", "lastIndex")}}). Le tableau renvoyé contient le texte qui correspond dans le premier élément puis un élément pour chaque groupe capturé dans les parenthèses capturantes. S'il n'y a aucune correspondance, la méthode `exec()` renvoie {{jsxref("null")}} et la propriété {{jsxref("RegExp.lastIndex", "lastIndex")}} reçoit la valeur 0. ## Description Si on a l'exemple suivant : ```js // On a une correspondance si on a "quick brown" suivi par "jumps", on ignore les caractères entre // On garde en mémoire "brown" et "jumps" // On ignore la casse var re = /quick\s(brown).+?(jumps)/ig; var result = re.exec('The Quick Brown Fox Jumps Over The Lazy Dog'); ``` Le tableau suivant montre l'état résultant suite à ce script :
Objet | Propriété/Index | Description | Exemple |
result |
[0] |
La chaîne complète des caractères qui correspondent. | "Quick Brown Fox Jumps" |
[1], ...[n ]
|
Les sous-chaînes correspondantes aux groupes capturants s'il y en a. Le nombre de groupes de parenthèses capturantes est illimité. |
result[1] === "Brown"
|
|
index |
L'indice (compté à partir de 0) de la correspondance dans la chaîne. | 4 |
|
input |
La chaîne de caractères utilisée en entrée. | "The Quick Brown Fox Jumps Over The Lazy Dog" |
|
re |
lastIndex |
L'indice à partir duquel chercher la prochaine correspondance. Lorsque le drapeau "g" est absent, cette propriété sera 0. | 25 |
ignoreCase |
Indique si le drapeau "i " a été utilisé pour ignorer la
casse.
|
true |
|
global |
Indique si le drapeau "g " a été utilisé pour la
correspondance globale.
|
true |
|
multiline |
Indique si le drapeau "m " a été utilisé pour chercher une
correspondance sur plusieurs lignes.
|
false |
|
source |
Le texte du motif. | "quick\s(brown).+?(jumps)" |