Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. Référence
  4. Objets natifs standards
  5. RegExp
  6. RegExp.prototype[@@replace]()

Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in EnglishAlways switch to English

RegExp.prototype[@@replace]()

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 ⁨janvier 2020⁩.

La méthode[@@replace]() remplace toutes ou certaines correspondances d'un motifthis dans une chaîne de caractère avec un outil de remplacement. La valeur renvoyée est la nouvelle chaîne ainsi créée. Cet outil de remplacement peut être une chaîne de caractère ou une fonction appelée pour chacune des correspondances.

Exemple interactif

class RegExp1 extends RegExp {  [Symbol.replace](str) {    return RegExp.prototype[Symbol.replace].call(this, str, "#!@?");  }}console.log("football".replace(new RegExp1("foo")));// Expected output: "#!@?tball"

Syntaxe

js
regexp[Symbol.replace](str, newSubStr|function)

Paramètres

str

Une chaîne de caractères (String) pour laquelle on souhaite effectuer des remplacement.

newSubStr (replacement)

La chaîne de caractères qui remplace les correspondances trouvées. On peut effectuer le remplacement sur un nombre donné de correspondances (cf. la sectionUtiliser une chaîne de caractères comme paramètre de la pageString.prototype.replace()).

function (replacement)

Une fonction qui est appelée pour créer la sous-chaîne de remplacement. Les arguments fournis à cette fonction sont décrits dans la sectionUtiliser une chaîne de caractères comme paramètre de la pageString.prototype.replace().

Valeur de retour

Une nouvelle chaîne de caractères pour laquelle les correspondances (toutes ou une partie) ont été remplacées.

Description

Cette méthode est appelée de façon interne par la méthodeString.prototype.replace() lorsque l'arugmentpattern argument est un objetRegExp. Les deux lignes de code qui suivent sont équivalentes et la seconde est la version interne de la première :

js
"abc".replace(/a/, "A");/a/[Symbol.replace]("abc", "A");

Cette méthode existe afin de pouvoir personnaliser le comportement du remplacement pour les classes filles deRegExp.

Si l'argument décrivant le motifn'est pas un objetRegExp,String.prototype.replace() n'appellera pas cette méthode et ne créera pas d'objetRegExp.

Exemples

Appel direct

Cette méthode peut être utilisée commeString.prototype.replace(), aux différences près que l'objetthis est différent et que l'ordre des arguments change :

js
var re = /-/g;var str = "2016-01-01";var newstr = re[Symbol.replace](str, ".");console.log(newstr); // 2016.01.01

Utiliser@@replace dans une sous-classe

Les sous-classes deRegExp peuvent surcharger la méthode[@@replace]() pour modifier le comportement.

js
class MaRegExp extends RegExp {  constructor(pattern, flags, count) {    super(pattern, flags);    this.count = count;  }  [Symbol.replace](str, replacement) {    // Applique @@replace |count| fois.    var result = str;    for (var i = 0; i < this.count; i++) {      result = RegExp.prototype[Symbol.replace].call(this, result, replacement);    }    return result;  }}var re = new MaRegExp("\\d", "", 3);var str = "01234567";var newstr = str.replace(re, "#"); // String.prototype.replace appelle re[@@replace].console.log(newstr); // ###34567

Spécifications

Specification
ECMAScript® 2026 Language Specification
# sec-regexp.prototype-%symbol.replace%

Compatibilité des navigateurs

Voir aussi

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2025 Movatter.jp