2009-12-18 4 views
6

En IE, "x".split(/(x)/).length vuelve 0¿Alguien sabe por qué "x" .split (/ (x) /). Length devuelve 0 en IE?

En Firefox, Chrome, Safari y Opera, vuelve 3.

¿Alguien sabe la razón por qué? Si es posible, un enlace de referencia será muy apreciado.

Creo que es un problema de implementación de expresiones regulares de IE, pero no puedo encontrar ningún documento al respecto.

+0

¿Qué versión de IE? –

+0

IE6,7,8 por lo que sé – YOU

Respuesta

6

Tiene razón de que hay problemas de implementación. IE ignora los valores vacíos y captura bloques dentro de expresiones regulares.

Así que para

"foo".split(/o/) 

IE da

[f] 

donde los otros navegadores ofrecen

["f","",""] 

y cuando se agrega la captura:

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

IE realiza la misma, pero los otros añadir el delimitador capturado en la matriz resultante para dar

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

Así que por desgracia es probable que sea necesario para evitar el uso de división, o el código en torno a estas cuestiones.

+0

+1, gracias por más detalles, análisis. – YOU

1

Tuve el mismo problema con la implementación de IE quebrada de split.

Aquí hay un pequeño archivo library que solucionó el problema perfectamente.

Cuestiones relacionadas