[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.replace [Back]  [Original]

RegExp.prototype[Symbol.replace]() - JavaScript | MDN

MDN Web Docs

View in English Always switch to English

RegExp.prototype[Symbol.replace]()

Baseline

20201

[Symbol.replace]() RegExp String.prototype.replace() String.prototype.replaceAll()

class RegExp1 extends RegExp {
  [Symbol.replace](str) {
    return RegExp.prototype[Symbol.replace].call(this, str, "#!@?");
  }
}

console.log("football".replace(new RegExp1("foo")));
// : "#!@?tball"

js
regexp[Symbol.replace](str, replacement)

str

(String)

replacement

  • String.prototype.replace
  • String.prototype.replace

String.prototype.replace() pattern RegExp 2

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

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

g exec() exec() null exec() exec() String.prototype.replace()

[Symbol.replace]() exec() null lastIndex 0 [Symbol.replace]() lastIndex replace()

js
const re = /a/y;

for (let i = 0; i < 5; i++) {
  console.log("aaa".replace(re, "b"), re.lastIndex);
}

// baa 1
// aba 2
// aab 3
// aaa 0
// baa 1

lastIndex

js
console.log("aa-a".replace(/a/gy, "b")); // "bb-a"

lastIndex Unicode Unicode 1 UTF-16 1

js
console.log("".replace(/(?:)/g, " ")); // " \ud83d \ude04 "
console.log("".replace(/(?:)/gu, " ")); // "  "

RegExp

this String.prototype.replace()

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

[Symbol.replace]()

RegExp [Symbol.replace]()

js
class MyRegExp extends RegExp {
  constructor(pattern, flags, count) {
    super(pattern, flags);
    this.count = count;
  }
  [Symbol.replace](str, replacement) {
    // [Symbol.replace]()  `count` 
    let result = str;
    for (let i = 0; i < this.count; i++) {
      result = RegExp.prototype[Symbol.replace].call(this, result, replacement);
    }
    return result;
  }
}

const re = new MyRegExp("\\d", "", 3);
const str = "01234567";
const newStr = str.replace(re, "#"); // String.prototype.replace  re[Symbol.replace]() 
console.log(newStr); // ###34567

ECMAScript 2027 LanguageSpecification
# sec-regexp.prototype-%symbol.replace%


Web Proxy Viewer  |  New URL  |  Original Page