La méthode [@@search]() recherche une correspondance entre une expression rationnelle décrite par this et une chaîne de caractères donnée.

Syntaxe

regexp[Symbol.search](str)

Paramètres

str
Une chaîne de caractères (String) sur laquelle on veut rechercher une correspondance.

Valeur de retour

entier
Si 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 de String.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 de RegExp.

Exemples

Appel direct

Cette méthode peut être utilisée comme String.prototype.search(), elle utilise simplement un objet this 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);  // 4

Utiliser @@search avec une sous-classe

Les sous-classes de RegExp 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); // 3

Spécifications

Spécification État Commentaires
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'RegExp.prototype[@@search]' dans cette spécification.
Standard Définition initiale.
ECMAScript Latest Draft (ECMA-262)
La définition de 'RegExp.prototype[@@search]' dans cette spécification.
Standard évolutif  

Compatibilité des navigateurs

FonctionnalitéChromeEdgeFirefoxInternet ExplorerOperaSafari
Support simple (Oui) (Oui)49 Non (Oui) (Oui)
FonctionnalitéAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Support simple (Oui) (Oui) (Oui)49 Non (Oui) (Oui)

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight
 Dernière mise à jour par : SphinxKnight,