Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
RegExp.prototype[@@search]()
Baseline Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2016.
La méthode[@@search]() recherche une correspondance entre une expression rationnelle décrite parthis et une chaîne de caractères donnée.
Dans cet article
Exemple interactif
class RegExp1 extends RegExp { constructor(str) { super(str); this.pattern = str; } [Symbol.search](str) { return str.indexOf(this.pattern); }}console.log("table football".search(new RegExp1("foo")));// Expected output: 6Syntaxe
regexp[Symbol.search](str);Paramètres
Valeur de retour
entierSi la recherche réussit,
[@@search]()renvoie la position de la première correspondance de l'expression rationnelle au sein de la chaîne, sinon elle renvoie-1.
Description
Cette méthode est appelée en interne lors de l'utilisation deString.prototype.search(). Ainsi, les deux exemples qui suivent sont équivalents et le second est la version interne du premier :
"abc".search(/a/);/a/[Symbol.search]("abc");Cette méthode existe afin de pouvoir adapter le comportement de la recherche pour les sous-classes deRegExp.
Exemples
>Appel direct
Cette méthode peut être utilisée commeString.prototype.search(), elle utilise simplement un objetthis différent et un ordre de paramètres différent :
var re = /-/g;var str = "2016-01-02";var résultat = re[Symbol.search](str);console.log(résultat); // 4Utiliser@@search avec une sous-classe
Les sous-classes deRegExp peuvent surcharger[@@search]() afin de modifier le comportement obtenu :
class MaRegExp extends RegExp { constructor(str) { super(str); this.pattern = str; } [Symbol.search](str) { return str.indexOf(this.pattern); }}var re = new MaRegExp("a+b");var str = "ab a+b";var résultat = str.search(re); // String.prototype.search appelle re[@@search].console.log(résultat); // 3Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-regexp.prototype-%symbol.search%> |