RegExp.prototype[@@search]()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
La méthode [@@search]()
recherche une correspondance entre une expression rationnelle décrite par this
et une chaîne de caractères donnée.
Exemple interactif
Syntaxe
regexp[Symbol.search](str);
Paramètres
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
Specification |
---|
ECMAScript Language Specification # sec-regexp.prototype-%symbol.search% |
Compatibilité des navigateurs
BCD tables only load in the browser