La méthode test() vérifie s'il y a une correspondance entre un texte et une expression rationnelle. Elle retourne true en cas de succès et false dans le cas contraire.

Syntaxe

regexObj.test(chaîne)

Paramètres

chaîne
La chaîne de caractères qu'on souhaite comparer à l'expression rationnelle.

Valeur de retour

Un booléen : true ou false selon qu'une correspondance a été trouvée entre la chaîne de caractères et la chaîne passée en argument.

Description

On utilisera test() dès qu'on souhaite savoir si une partie d'une chaîne de caractères correspond à une expression rationnelle (similaire à la méthode String.prototype.search()). Pour obtenir plus d'informations (mais une exécution moins rapide), on utilisera la méthode exec() (similaire à la méthode String.prototype.match()). Comme avec exec() (et même en combinant les deux), des appels successifs à test() sur une même instance d'une expression rationnelle permettent de rechercher après la dernière occurence. Cette méthode est différente de search car elle renvoie un booléen et non la position de la correspondance si elle est trouvée (ou -1 sinon).

Exemples

Utiliser test()

Voici un exemple simple qui illustre comment détecter si la chaîne coucou est contenue au début d'une chaîne :

var str = "coucou monde !";
var résultat = /^coucou/.test(str);
console.log(résultat); // true

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

function testinput(re, str){
    var midstring;
    if (re.test(str)) {
        midstring = " contient ";
    } else {
        midstring = " ne contient pas ";
    }
    console.log(str + midstring + re.source);
}

Utiliser test() avec le marqueur global (/g)

Si l'expression rationnelle utilise le marqueur global (g), la méthode test() avancera la propriété lastIndex associée à l'expression rationnelle. Ainsi, si on utilise test() ensuite, la recherche commencera à partir de la nouvelle valeur de lastIndex (de même exec() fera également avancer la propriété lastIndex).

var regex = /toto/g;

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

// regex.lastIndex se situe désormais à 4
regex.test("toto"); // false

Spécifications

Spécification État Commentaires
ECMAScript 3rd Edition (ECMA-262) Standard Définition initiale. Implémentée avec JavaScript 1.2.
ECMAScript 5.1 (ECMA-262)
La définition de 'RegExp.test' dans cette spécification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'RegExp.test' dans cette spécification.
Standard  
ECMAScript Latest Draft (ECMA-262)
La définition de 'RegExp.test' dans cette spécification.
Standard évolutif  

Compatibilité des navigateurs

FonctionnalitéChromeEdgeFirefoxInternet ExplorerOperaSafari
Support simple Oui Oui Oui Oui Oui Oui
FonctionnalitéAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Support simple Oui Oui Oui Oui Oui Oui Oui

Notes spécifiques à Firefox

Pour les versions antérieures à Firefox 8.0, l'implémentation de test() était erronée. Quand la méthode était appelée sans aucun paramètre, elle effectuait son test par rapport à la dernière entrée (la propriété RegExp.input) et non par rapport à la chaîne "undefined". Ce comportement a été corrigé  ; désormais /undefined/.test() retourne bien true au lieu d'une erreur.

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight, J.DMB, Tolokoban
 Dernière mise à jour par : SphinxKnight,