function testGlobalExec() { var re = /abc.+de/g; var c = 0; for (var i = 0; i < 100; i++) {
re.lastIndex = 0; if (i === 60) {
Object.freeze(re);
} try {
re.exec("abcXdef");
} catch (e) {
assertEq(e.toString().includes("lastIndex"), true);
c++;
}
assertEq(re.lastIndex, i >= 60 ? 0 : 6);
}
assertEq(c, 40);
}
testGlobalExec();
function testStickyTest() { var re = /abc.+de/y; var c = 0; for (var i = 0; i < 100; i++) {
re.lastIndex = 0; if (i === 60) {
Object.freeze(re);
} try {
re.test("abcXdef");
} catch (e) {
assertEq(e.toString().includes("lastIndex"), true);
c++;
}
assertEq(re.lastIndex, i >= 60 ? 0 : 6);
}
assertEq(c, 40);
}
testStickyTest();
// Must not reset too-large .lastIndex to 0 if non-writable. function testLastIndexOutOfRange() { var re = /abc.+de/g;
re.lastIndex = 123;
Object.freeze(re); for (var i = 0; i < 100; i++) { var ex = null; try {
re.exec("abcXdef");
} catch (e) {
ex = e;
}
assertEq(ex.toString().includes("lastIndex"), true);
assertEq(re.lastIndex, 123);
}
}
testLastIndexOutOfRange();
// .lastIndex is ignored for non-global/non-sticky regexps. function testPlainExec() { var re = /abc.+de/;
re.lastIndex = 1234; for (var i = 0; i < 100; i++) { if (i === 60) {
Object.freeze(re);
}
assertEq(re.exec("abcXdef")[0], "abcXde");
assertEq(re.lastIndex, 1234);
}
}
testPlainExec();
Messung V0.5
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.