Visitar URL original
RegExp : méthode test() - JavaScript | MDN

Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

RegExp : méthode test()

Baseline
Large disponibilité

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.

La méthode test() des instances de RegExp exécute une recherche avec cette expression rationnelle pour trouver une correspondance entre l'expression rationnelle et une chaîne de caractères définie. Elle retourne true s'il y a une correspondance ; false dans le cas contraire.

Les objets JavaScript RegExp sont avec état lorsqu'ils ont les indicateurs global ou sticky définis (par exemple, /toto/g ou /toto/y). Ils stockent un lastIndex à partir de la correspondance précédente. En utilisant cela en interne, test() peut être utilisé pour itérer sur plusieurs correspondances dans une chaîne de caractères de texte (avec des groupes de capture).

Exemple interactif

const str = "table tototball";

const regex = /fo+/;
const globalRegex = /fo+/g;

console.log(regex.test(str));
// Résultat attendu : true

console.log(globalRegex.lastIndex);
// Résultat attendu : 0

console.log(globalRegex.test(str));
// Résultat attendu : true

console.log(globalRegex.lastIndex);
// Résultat attendu : 9

console.log(globalRegex.test(str));
// Résultat attendu : false

Syntaxe

js
test(str)

Paramètres

str

La chaîne de caractères contre laquelle comparer l'expression rationnelle. Toutes les valeurs sont converties en chaînes de caractères, donc l'omission de ce paramètre ou le passage de undefined entraîne la recherche de la chaîne de caractères "undefined" par test(), ce qui est rarement souhaité.

Valeur de retour

true si une correspondance est trouvée entre l'expression rationnelle et la chaîne de caractères str. Sinon, false.

Description

Utilisez test() chaque fois que vous voulez savoir si un motif est trouvé dans une chaîne de caractères. test() retourne un booléen, contrairement à la méthode String.prototype.search() (qui retourne l'index d'une correspondance, ou -1 si aucune correspondance n'est trouvée).

Pour obtenir plus d'informations (mais avec une exécution plus lente), utilisez la méthode exec(). (Ceci est similaire à la méthode String.prototype.match().)

Comme avec exec() (ou en combinaison avec elle), des appels successifs à test() sur une même instance d'une expression rationnelle globale permettent de rechercher après la dernière correspondance.

Exemples

Utiliser test()

Cet exemple teste si "bonjour" est contenu au tout début d'une chaîne de caractères, renvoyant un résultat booléen.

js
const chaine = "bonjour le monde !";
const resultat = /^bonjour/.test(chaine);

console.log(resultat); // true

L'exemple suivant affiche un message qui dépend du succès du test :

js
function testerEntree(re, chaine) {
  const moitieChaine = re.test(chaine) ? "contient" : "ne contient pas";
  console.log(`${chaine} ${moitieChaine} ${re.source}`);
}

Utiliser test() avec une expression rationnelle ayant l'indicateur « global »

Lorsqu'une expression rationnelle a l'indicateur global de défini, test() fait avancer la lastIndex de l'expression rationnelle. (RegExp.prototype.exec() fait également avancer la propriété lastIndex.)

Les appels ultérieurs à test(str) reprennent la recherche dans str à partir de lastIndex. La propriété lastIndex continuer d'augmenter chaque fois que test() retourne true.

Note : Tant que test() retourne true, lastIndex n'est pas réinitialisé — même lors du test d'une chaîne de caractères différente !

Lorsque test() retourne false, la propriété lastIndex de l'expression rationnelle appelante est réinitialisée à 0.

L'exemple suivant illustre ce comportement :

js
const regex = /toto/g; // l'indicateur "global" est défini

// regex.lastIndex est à 0
regex.test("toto"); // true

// regex.lastIndex est maintenant à 3
regex.test("toto"); // false

// regex.lastIndex est à 0
regex.test("tructoto"); // true

// regex.lastIndex est à 6
regex.test("tototruc"); // false

// regex.lastIndex est à 0
regex.test("tototructoto"); // true

// regex.lastIndex est à 3
regex.test("tototructoto"); // true

// regex.lastIndex est à 9
regex.test("tototructoto"); // false

// regex.lastIndex est à 0
// (...et ainsi de suite)

Spécifications

Spécification
ECMAScript® 2027 Language Specification
# sec-regexp.prototype.test

Compatibilité des navigateurs

Voir aussi