Source code
Revision control
Copy as Markdown
Other Tools
var re = /x/;
var seen = [];
re.exec = function() {
var result = { length: 101, 0: "x", index: 0 };
for (let i = 1; i <= 100; i++) {
Object.defineProperty(result, i, {
get() {
seen.push(i);
return "#" + i + "#";
},
});
}
return result;
};
assertEq("x".replace(re, "$99|$100"), "#99#|#10#0");
assertEq(seen.length, 100);
assertEq(seen[0], 1);
assertEq(seen[98], 99);
assertEq(seen[99], 100);