He estado investigando este problema que solo parece empeorar cuanto más profundizo.expresión regular en javascript cadena dividida, compatibilidad con el navegador problema
empecé inocentemente tratando de utilizar esta expresión para dividir una cadena de etiquetas HTML 'br':
T = captions.innerHTML.split(/<br.*?>/g);
Esto funciona en todos los navegadores (FF, Safari, Chrome), excepto IE7 e IE8 con el ejemplo texto de entrada como esta:
is invariably subjective. <br />
The less frequently used warnings (Probably/Possibly) <br />
Tenga en cuenta que el texto de ejemplo contiene un espacio antes del '/', y precede a una nueva línea.
ambos de los siguientes coincidirá con todas las etiquetas HTML en todos los navegadores:
T = captions.innerHTML.split(/<.*?>/g);
T = captions.innerHTML.split(/<.+?>/g);
Sin embargo, es sorprendente (al menos para mí), este no trabajo en FF y Chrome:
T = captions.innerHTML.split(/<br.+?>/g);
Editar:
Esto (sugerido varias veces en las respuestas a continuación,) no funciona en IE 7 u 8:
T = captions.innerHTML.split(/<br[^>]*>/g);
(Se hizo el trabajo en Chrome y FF.)
Mi pregunta es: ¿alguien sabe una expresión que funciona en todos los navegadores actuales para que coincida con las etiquetas 'br' anteriores (pero no otras etiquetas HTML) . Y ¿alguien puede confirmar que el último ejemplo anterior debe ser una coincidencia válida ya que dos caracteres están presentes en el texto de ejemplo antes del '>'.
PD: mi doctype es HTML de transición.
Editar:
creo que tengo pruebas este es específico para el string.split() Comportamiento en IE y no regex en general. Debes usar split() para ver este problema. También encontré una matriz de prueba que muestra una tasa de fallas de aproximadamente 30% para los casos de prueba de split() cuando lo ejecuté en IE. Las mismas pruebas pasaron 100% en Chrome FF y:
http://stevenlevithan.com/demo/split.cfm
Hasta el momento, todavía no he encontrado una solución para IE, y la biblioteca proporcionada por el autor de esa matriz de prueba no fijó este caso.
PPS - Actualmente no estoy probando IE6 u Opera, pero no dude en analizar estos si es relevante. –