www whatwg what spec language español 3wc javascript regex split internet-explorer-7

whatwg - javascript split regex bug en IE7



whatwg español (2)

Hice una solución que funciona en regex ({[^{}]*}) y probablemente también en otros.

function ieSplit(str, separator) { var match = str.match(RegExp(separator, ''g'')); var notmatch = str.replace(new RegExp(separator, ''g''), ''[|]'').split(''[|]''); var merge = []; for(i in notmatch) { merge.push(notmatch[i]); if (match != null && match[i] != undefined) { merge.push(match[i]); } } return merge; } alert(ieSplit(text, ''({[^{}]*})'')); // result in FF : .box.round ,{border-radius: 10px;}, // result in IE7: .box.round ,{border-radius: 10px;},

Estoy tratando de dividirme con esta expresión regular ({[^{}]*}) en javascript y obtengo un resultado diferente por IE7 y FF. El resultado de Firefox es el correcto.

<style> .box.round { border-radius: 10px; } </style> <script> jQuery(function ($) { $(''style'').each(function () { text = $(this).html(); alert(text); alert(text.split(/({[^{}]*})/)); // result in FF: .box.round ,{border-radius: 10px;}, // result in IE7: .box.round }); }); </script>

Actualización ¿Hay alguna manera de cambiar la expresión regular para que funcione en IE7 también sin agregar una biblioteca de JavaScript?


Consulte esta publicación de blog anterior para una posible solución a la variación en el manejo de grupos capturados en expresiones regulares .split() .

De ese artículo:

  • Internet Explorer excluye casi todos los valores vacíos de la matriz resultante (por ejemplo, cuando dos delimitadores aparecen uno al lado del otro en los datos, o cuando aparece un delimitador al principio o al final de los datos). Esto no tiene ningún sentido para mí, ya que IE incluye valores vacíos cuando se utiliza una cadena como delimitador.
  • Internet Explorer y Safari no empalman los valores de capturar paréntesis en la matriz devuelta (esta funcionalidad puede ser útil con analizadores simples, etc.)
  • Firefox no empalma valores indefinidos en la matriz devuelta como resultado de grupos de captura no participantes.
  • Internet Explorer, Firefox y Safari tienen varios errores adicionales en el caso de que no cumplan con la especificación de división (que en realidad es bastante compleja).

La biblioteca XRegExp de Levithan es realmente pequeña y útil, e incluye las correcciones.