Pregunta

'{5}<blah>{0}</blah>'

quiero convertir eso en:

['{5}', '<blah>', '{0}', '</blah>']

actualmente uso: ________.split(/({.*?})/);

pero esto falla cuando la llave es el primer carácter como en el caso:

'{0}<blah>'

que se convierte en: ['', '{0}', '<blah>'] ... una matriz de 3 elementos, no un 2

¿Qué le pasa a mi expresión regular?

¡Gracias!

¿Fue útil?

Solución

No hay nada malo con tu expresión regular, pero hay un problema con la forma en que estás usando la división. Split devuelve una matriz basada en un delimitador, por lo que si el delimitador es PRIMERO, le proporciona las cosas a la izquierda y a la derecha del elemento dividido.

Simplemente verifique si el primer elemento == '' y elimínelo si es así.

Otros consejos

Esto debería hacerlo:

split(/((?!^)\{.*?\})/)

La búsqueda anticipada negativa - (?!^) - tiene éxito si la coincidencia no comienza al comienzo de la cadena.

¿Qué opinas de:

'{5}<blah>{0}</blah>'.split(/{([^}]+)}/g)

El valor de los bloques rizados son cada 2 elementos del elemento 1.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top