Source code

Revision control

Copy as Markdown

Other Tools

function g(N, p) {
var prefix = p.repeat(N);
var str = prefix + "[AB]";
try {
var re = new RegExp(str);
re.exec(prefix + "A");
} catch(e) {
// 1. Regexp too big is raised by the lack of the 64k virtual registers
// reserved for the regexp evaluation.
// 2. The stack overflow can occur during the analysis of the regexp
assertEq(e.message.includes("regexp too big") ||
e.message.includes("Stack overflow") ||
e.message.includes("too much recursion"), true);
}
}
var prefix = "/(?=k)ok/";
for (var i = 0; i < 18; i++)
g(Math.pow(2, i), prefix)