RegExp.prototype[@@search]()

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.
Projet  

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung InternetNode.js
@@searchChrome Support complet 49Edge Support complet 13Firefox Support complet 49IE Aucun support NonOpera Support complet 36Safari Support complet OuiWebView Android Support complet 49Chrome Android Support complet 49Firefox Android Support complet 49Opera Android Support complet 36Safari iOS Support complet OuiSamsung Internet Android Support complet 5.0nodejs Support complet 6.0.0

Légende

Support complet  
Support complet
Aucun support  
Aucun support

Voir aussi