| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.replace | [Back] [Original] |
Get to know MDN better
[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"
regexp[Symbol.replace](str, replacement)
String.prototype.replace() pattern RegExp 2
"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()
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
console.log("aa-a".replace(/a/gy, "b")); // "bb-a"
lastIndex Unicode Unicode 1 UTF-16 1
console.log("".replace(/(?:)/g, " ")); // " \ud83d \ude04 "
console.log("".replace(/(?:)/gu, " ")); // " "
RegExp
this String.prototype.replace()
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]()
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 |