Modern tarayıcılarda normal ifadenin maksimum boyutu nedir (örn. Firefox 3+, Safari 4+, IE 7+)? Basit bir düzenli ifadeyi varsayalım, "foo | bar | baz | woot | ..." ""Modern" web tarayıcılarında maksimum boyut/normal ifade ifadesi uzunluğu?
cevap
Bu kodu, IE8/firefox'ta firebug/Chrome ile test etmek için kullanabilirsiniz.
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));
}
}
Hata oluştuğunda sınırı buldunuz.
basit bir 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
I
9M karakter ile bir normal ifade çalıştığında hata iletisi (Ubuntu 32 bit) ateş 3.6.3 içinde
SONUÇLARI (9.999.990 karakter)
3.204.161 karakter. 3.204.160 ile tamam.
Chrome 5.0.3'te sınır, 20M ila 25M karakter arasında bir şeydir.
hata, içinde ateş vardır:
script stack space quota is exhausted
Not: bazı test yaptım, burada yorum lütfen.
Birçok dağıtım, yığın alanını 10 MB ile sınırlandırır; – Chris
@Chris Yorumunuz için teşekkürler, ama en iyisi 3M karaktere yakın ... Tam sayıyı almaya çalışıyorum. – Topera
Tüm pratik amaçlar için olduğu gibi, RegEx boyutu neredeyse sınırsızdır. Şimdi saçma sapan büyük düzenli ifadelerin performansını belirlemek için tavşan deliğinden aşağı ineceğim. :) – Tyson
normal ifadeniz böyle basit, neden sadece dize karşılaştırmaları yapan bir döngü var:
Sonravar input = "woot";
var tests = ["foo", "bar", "baz", "woot"];
for(i = 0; i < tests.length; i++) {
if (tests[i] == input) {
alert("match found: #" + i);
break;
}
}
tarayıcı sınırlamaları hakkında endişelenmenize gerek yoktur ve büyük olasılıkla fazla performans göstereceklerini Sonuç olarak daha iyi (normal ifade sürümü normal ifadeleri ayrıştırmak ve derlemek zorunda kalacaktı, çünkü geri izleme bol olurdu, vb.).
Doğru, ama soruya cevap vermiyor. – Bergi
Bazı düzenli ifadeler değerlendirmek için üstel bellek miktarını gerektirir. Firefox, birçok Linux dağıtımında 10 MB ile sınırlı olan ve hatta Windows'da daha küçük olan (en azından Firefox'un bazı sürümleri) yığını üzerinde yaptığı için, üstel bellek gerektiren normal bir ifade kullanırsanız, bu sınırı oldukça hızlı bir şekilde vurabilirsiniz. değerlendirmek için DFA formuna dönüştürmek.
- 1. ** argv parametrelerinin maksimum uzunluğu
- 2. Maksimum bayt uzunluğu []?
- 3. PDO girişin maksimum uzunluğu
- 4. SQLAlchemy - maksimum sütun uzunluğu
- 5. HttpRuntime.Cache nesnesinde maksimum önbellek uzunluğu uzunluğu?
- 6. Düzenli İfade Minimum Uzunluğu
- 7. asp.net web hizmeti maksimum json giriş uzunluğu aşıldı
- 8. MySQL ve GROUP_CONCAT() maksimum uzunluğu
- 9. Alternatif ifadesi OR ifade
- 10. Bir sorgu dizesinin olası maksimum uzunluğu nedir?
- 11. Modern düzenli ifade lehçeleri düzenli değil mi?
- 12. Farklı web tarayıcılarında PRE sekmesi genişliğini ayarlama
- 13. Oracle sayı formatında modeli maksimum uzunluğu
- 14. Maksimum Taslak Uzunluğu nasıl sınırlanır js
- 15. . Net çekirdekte varsayılan maksimum istek uzunluğu nedir?
- 16. NetcatSource: İstemci maksimum uzunluğu aşan göndermişti
- 17. Bir python dizesinin maksimum uzunluğu nedir?
- 18. Alt işlem nedir.Args parametresinin maksimum uzunluğu nedir?
- 19. Bir DLL dosyasındaki işlev adlarının maksimum uzunluğu
- 20. Perl Strange -M 'in' ifadesinde 'İfade' ifadesi
- 21. python: ifadesi ifade içinde olabilir mi?
- 22. NG-Tekrarla ifade ifadesi NG-Repeat
- 23. Slick sorgusu sonuçları için bir ifade ifadesi
- 24. jsp içinde giriş ifadesi içinde koşullu ifade
- 25. İp uzunluğu yerine, maksimum hizalama uzunluğu için Levenshtein mesafesinin nasıl normalleştirilmesi gerekir?
- 26. WCF servisi Maksimum dizi uzunluğu kotası (16384) aşıldı
- 27. R'de Delaunay üçgenlemede maksimum üçgen taraf uzunluğu nasıl ayarlanır?
- 28. WPF DataGridTextColum Metin uzunluğu maksimum 10 karakterle sınırlama
- 29. Mac OS X Lion: Maksimum yol uzunluğu nedir?
- 30. OneDrive SDK ile kullanılabilecek maksimum dosya adı uzunluğu nedir?
Sormak zorundaysanız, yanlış yapıyorsunuz ... –
@Andrew Veya belki de usta tarayıcı sınırlarında ustalık tezi yapıyor. – treeface
Veya doğal olarak merak ediyorum. – Tyson