String.prototype.search()
La méthode search()
éxecute une recherche dans une chaine de caractères grâce à une expression rationnelle appliquée sur la chaîne courante.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner https://github.com/mdn/interactive-examples et à envoyer une pull request !
Syntaxe
str.search(regexp)
Paramètres
regexp
- Un objet représentant une expression rationnelle. Si l'objet passé n'est pas un objet d'expression régulière, il est directement converti en une instance de
RegExp
en utilisantnew RegExp(obj)
.
Valeur de retour
Si la recherche aboutit, search()
renvoie un entier qui correspond à l'indice de la première correspondance trouvée dans la chaîne. Si rien n'est trouvé, la méthode renvoie -1
.
Description
Si la recherche est positive, search()
renvoie l'indice de la première correspondance pour l'expression rationnelle au sein de la chaine de caractères. Sinon, la méthode renvoie -1.
Si on souhaite savoir si un motif est trouvé dans une chaine de caractères, on utilisera cette méthode (semblable à la méthode test()
) du prototype de RegExp
; pour plus d'informations (mais une éxecution plus lente), on utilisera match()
(semblable à la méthode exec()
pour les expressions rationnelles). La méthode test
est semblable mais renvoie uniquement un booléen indiquant si une correspondance a été trouvée.
Exemples
Dans l'exemple suivant, on utilise une chaîne de caractères pour laquelle on applique deux expressions rationnelles (la première permet d'obtenir une correspondance et la seconde n'en trouve aucune).
var maChaine = "CoucOu";
var regex1 = /[A-Z]/g;
var regex2 = /[.]/g;
console.log(maChaine.search(regex1)); // Renvoie 0, la position de la première majuscule
console.log(maChaine.search(regex2)); // Renvoie -1 car il n'y a aucun point dans la chaîne
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 'String.prototype.search' dans cette spécification. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) La définition de 'String.prototype.search' dans cette spécification. |
Standard | |
ECMAScript (ECMA-262) La définition de 'String.prototype.search' dans cette spécification. |
Standard évolutif |
Compatibilité des navigateurs
BCD tables only load in the browser
Le tableau de compatibilité de cette page a été généré à partir de données structurées. Si vous souhaitez contribuer à ces données, n'hésitez pas à envoyer une pull request sur https://github.com/mdn/browser-compat-data.
Notes spécifiques à Gecko
flags
était un second argument non standard présent uniquement sur Gecko : str.search(regexp, flags)- Avant Gecko 8.0,
search()
n'était pas implémenté correctement ; quand il était appelé sans paramètre ou avecundefined
, la recherche validait la chaine de caractères "undefined", au lieu de valider une chaine de caractères vide. Cela a été corrigé ; désormais,"a".search()
et"a".search(undefined)
renvoient bien 0. - À partir de Gecko 39 (Firefox 39 / Thunderbird 39 / SeaMonkey 2.36), les arguments non-standards (
flags
) pour les drapeaux sont dépréciés et déclenchent des avertissements dans la console (bug 1142351). Cette propriété est spécifique à Gecko et sera retirée à l'avenir. - À partir de Gecko 47 (Firefox 47 / Thunderbird 47 / SeaMonkey 2.44), l'argument non-standard
flags
n'est plus supporté dans les versions hors release et sera bientôt retiré définitivement (bug 1245801). - À partir de Gecko 49 (Firefox 49 / Thunderbird 49 / SeaMonkey 2.46), l'argument non-standard
flags
n'est plus pris en charge (bug 1108382).