现代浏览器(即Firefox 3 +,Safari 4 +,IE 7+)中正则表达式的最大大小是多少?假设有一个简单的正则表达式,例如“foo | bar | baz | woot | ...”
最佳答案
您可以在IE8/firefox和Firebug/Chrome中使用此代码进行测试。
var regex = "";
var maximum = 100;
var showAfter = 95;
for(i = 1; i < maximum; i++) {
regex += "aaaaaaaaaa";
if (i > showAfter) {
console.log(10 * i + " chars");
console.log(RegExp(regex));
}
}
遇到错误时,您便找到了极限。
SIMPLE TEST
var regex = "";
var chars = 3204161;
for(i = 0; i < chars; i++) {
regex += "a";
}
alert(chars + " chars");
var a = RegExp(regex); // don't send to console, to be faster
结果
在Firefox 3.6.3(Ubuntu 32位)中,当我尝试使用9M个字符(9.999.990个字符) 3.204.161 字符的正则表达式时出现错误。使用3.204.160可以。
在Chrome 5.0.3中,限制为20M至25M个字符。
在Firefox中,错误是:
script stack space quota is exhausted
注意:如果您进行了一些测试,请在此处评论。
关于javascript - "modern"Web浏览器中正则表达式的最大大小/长度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3681460/