現代瀏覽器(即Firefox 3 +,Safari 4 +,IE 7+)中正則表達式的最大大小是多少?假設一個簡單的正則表達式,例如「foo | bar | baz | woot | ...」「現代」網絡瀏覽器中正則表達式的最大大小/長度?
5
A
回答
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));
}
}
當您收到錯誤時,您找到了該限制。
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
注意:如果你做了一些測試,請在這裏評論。
-1
如果你的正則表達式是簡單的樣子,爲什麼不只是有一個循環,它的字符串比較:
var input = "woot";
var tests = ["foo", "bar", "baz", "woot"];
for(i = 0; i < tests.length; i++) {
if (tests[i] == input) {
alert("match found: #" + i);
break;
}
}
那麼你不必擔心瀏覽器的限制,它很可能會進行多(因爲正則表達式版本將不得不分析和編譯正則表達式,所以會有大量的後臺跟蹤等等)。
+0
是的,但它不回答這個問題。 – Bergi 2013-04-22 11:13:13
2
某些正則表達式需要指數量的內存來評估。由於Firefox在堆棧上執行此操作(在許多Linux發行版上限制爲10 MB,在Windows中限制更小)(至少某些版本的Firefox),如果使用需要指數內存的正則表達式,則可以相當快地達到限制轉換爲DFA表單進行評估。
相關問題
- 1. 最大長度爲小數的正則表達式
- 2. 正則表達式href最小長度
- 3. PHP的正則表達式的最小和最大號碼長度
- 4. 在正則表達式中設置最大長度
- 5. 正則表達式中的最大表達式字符串長度(MATLAB)
- 6. 正則表達式失敗的最大長度
- 7. 正則表達式的最大匹配長度
- 8. 正則表達式接受小於最大大小的數字
- 9. 多最大長度在正則表達式
- 10. 添加「最大長度」給正則表達式
- 11. 限制最大長度與正則表達式+ C#
- 12. 在Chrome瀏覽器網址的最大長度
- 13. 正則表達式爲最小長度的非小數點
- 14. 正則表達式驗證 - 使用最小長度值和未定義最大長度的範圍驗證
- 15. 計算Swift中正則表達式的最小匹配長度
- 16. 正則表達式中任意兩個單詞的最小長度和總長度大於5
- 17. 在正則表達式中應用最大和最小限制
- 18. 正則表達式如果長度大於N,則如果與
- 19. 谷歌瀏覽器中的最大寬度與最大高度
- 20. 在Java中沒有明顯的最大長度的正則表達式後退
- 21. 揭示瀏覽器正則表達式?
- 22. 正則表達式瀏覽器搜索?
- 23. 匹配正則表達式的字符串的最小長度
- 24. 正回顧後發正則表達式明顯的最大長度
- 25. 正則表達式 - 最小和最大字符長度,複製和粘貼文本時出現奇怪錯誤
- 26. 處理javascript正則表達式中的大括號在所有現代瀏覽器中都是一樣的嗎?
- 27. 正則表達式 - 最小長度的字符串重複
- 28. 正則表達式大於和小於
- 29. 正則表達式區分大小寫
- 30. 正則表達式大寫到小寫
如果你不得不問,你做錯了...... – 2010-09-10 00:09:36
@Andrew或者他也許正在做他的碩士論文在深奧的瀏覽器限制。 – treeface 2010-09-10 00:11:17
或者我自然好奇。 – Tyson 2010-09-10 20:30:44