2009-12-18 8 views
6

W IE "x".split(/(x)/).length powraca 0Ktoś wie, dlaczego "x" .split (/ (x) /). Length zwraca 0 w IE?

w Firefox, Chrome, Safari i Opera, zwraca 3.

Czy ktoś wie, dlaczego? Jeśli to możliwe, odnośnik referencyjny zostanie bardzo doceniony.

Uważam, że jest to problem implementacji IE regex, ale nie mogę znaleźć żadnego dokumentu na ten temat.

+0

Która wersja IE? –

+0

IE6,7,8 o ile mi wiadomo – YOU

Odpowiedz

6

Jesteś prawdą, że istnieją problemy wdrożeniowe. IE ignoruje puste wartości i przechwytuje bloki w wyrażeniach regularnych.

Więc dla

"foo".split(/o/) 

IE daje

[f] 

gdzie inne przeglądarki dać

["f","",""] 

i po dodaniu przechwytywanie:

"foo".split(/(o)/) 

IE wykonuje to samo, ale inni dodać przechwycony separator do otrzymanej tablicy dać

["f","o","","o",""] 

Więc niestety prawdopodobnie albo trzeba unikać podziału, kod lub wokół tych zagadnień.

+0

+1, dzięki za więcej szczegółów, analizy. – YOU

1

Miałem ten sam problem ze złamaną implementacją podziału IE. To jest mały plik , który naprawił problem.

Powiązane problemy