"现代"Web浏览器中正则表达式的最大大小/长度?

Tys*_*son 5 javascript regex

现代浏览器(即Firefox 3 +,Safari 4 +,IE 7+)中正则表达式的最大大小是多少?假设一个简单的正则表达式,比如说"foo | bar | baz | woot | ..."

Top*_*era 9

您可以使用此代码在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));
    }
}
Run Code Online (Sandbox Code Playgroud)

当您收到错误时,您找到了限制.


简单的测试

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
Run Code Online (Sandbox Code Playgroud)

结果

在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
Run Code Online (Sandbox Code Playgroud)

注意:如果你做了一些测试,请在这里评论.

  • 许多发行版将堆栈空间限制为10 MB,因此这可能就是你所要达到的. (3认同)