huge-01.js (624B)
1 function g(N, p) { 2 var prefix = p.repeat(N); 3 var str = prefix + "[AB]"; 4 5 try { 6 var re = new RegExp(str); 7 re.exec(prefix + "A"); 8 } catch(e) { 9 // 1. Regexp too big is raised by the lack of the 64k virtual registers 10 // reserved for the regexp evaluation. 11 // 2. The stack overflow can occur during the analysis of the regexp 12 assertEq(e.message.includes("regexp too big") || 13 e.message.includes("Stack overflow") || 14 e.message.includes("too much recursion"), true); 15 } 16 } 17 18 var prefix = "/(?=k)ok/"; 19 for (var i = 0; i < 18; i++) 20 g(Math.pow(2, i), prefix)