Кто-нибудь знает, почему "x" .split (/ (x) /). Length возвращает 0 в IE? - PullRequest
6 голосов
/ 18 декабря 2009

В IE "x".split(/(x)/).length возвращает 0

В Firefox, Chrome, Safari и Opera возвращается 3.

Кто-нибудь знает причину почему? По возможности, ссылка будет принята с благодарностью.

Я считаю, что это проблема реализации IE regex, но я не могу найти какой-либо документ об этом.

Ответы [ 3 ]

6 голосов
/ 18 декабря 2009

Вы правы, что есть проблемы с реализацией. IE игнорирует пустые значения и захватывает блоки в регулярных выражениях.

Так что для

"foo".split(/o/)

IE дает

[f]

где другие браузеры дают

["f","",""]

и при добавлении захвата:

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

IE выполняет то же самое, но другие добавляют захваченный разделитель в результирующий массив, чтобы получить

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

Так что, к сожалению, вам, вероятно, нужно либо избегать использования split, либо кодировать эти проблемы.

3 голосов
/ 18 декабря 2009
1 голос
/ 20 августа 2010

У меня была такая же проблема со сломанной IE-реализацией split.

Вот небольшой файл библиотеки , который отлично решил проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...