--- title: RegExp.prototype[@@search]() slug: Web/JavaScript/Reference/Global_Objects/RegExp/@@search tags: - Expressions rationnelles - JavaScript - Méthode - Prototype - Reference - RegExp translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/@@search original_slug: Web/JavaScript/Reference/Objets_globaux/RegExp/@@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.
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 !
regexp[Symbol.search](str)
str
entier
[@@search]()
renvoie la position de la première correspondance de l'expression rationnelle au sein de la chaîne, sinon elle renvoie -1
.Cette méthode est appelée en interne lors de l'utilisation de {{jsxref("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
.
Cette méthode peut être utilisée comme {{jsxref("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
@@search
avec une sous-classeLes sous-classes de {{jsxref("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écification | État | Commentaires |
---|---|---|
{{SpecName('ES6', '#sec-regexp.prototype-@@search', 'RegExp.prototype[@@search]')}} | {{Spec2('ES6')}} | Définition initiale. |
{{SpecName('ESDraft', '#sec-regexp.prototype-@@search', 'RegExp.prototype[@@search]')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.builtins.RegExp.@@search")}}