Domanda

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

Voglio trasformarlo in:

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

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

ma questo fallisce quando la parentesi graffa è il primo carattere come nel caso:

'{0}<blah>'

che si trasforma in: ['', '{0}', '<blah>'] ... un array di 3 elementi, non un 2

Cosa c'è che non va nel mio regex?

Grazie!

È stato utile?

Soluzione

Non c'è niente di sbagliato nel tuo regex, ma c'è un problema con il modo in cui stai usando split. Dividi restituisce un array basato su un delimitatore, quindi se il delimitatore è PRIMO, ti dà il materiale a sinistra e a destra dell'elemento diviso.

Controlla solo se il primo elemento == '' e rimuovilo se lo è.

Altri suggerimenti

Questo dovrebbe farlo:

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

Lo sguardo negativo - (?!^) - ha esito positivo se la corrispondenza non inizia all'inizio della stringa.

Cosa ne pensi:

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

Il valore dei blocchi ricci è ogni 2 elementi dall'elemento 1.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top