Question

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

je veux transformer cela en:

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

j'utilise actuellement: ________.split(/({.*?})/);

mais cela échoue lorsque l'accolade est le premier caractère, comme dans le cas suivant:

'{0}<blah>'

qui devient: ['', '{0}', '<blah>'] ... un tableau à 3 éléments, pas un 2

qu'est-ce qui ne va pas avec mon regex?

Merci!

Était-ce utile?

La solution

Il n’ya rien de mal avec votre expression rationnelle, mais il existe un problème avec la façon dont vous utilisez split. Split renvoie un tableau basé sur un délimiteur. Par conséquent, si le délimiteur est FIRST, il affiche le contenu à gauche et à droite de l'élément fractionné.

Il suffit de vérifier si le premier élément == '' et de le supprimer s'il l'est.

Autres conseils

Cela devrait le faire:

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

Le préfixe négatif - (?!^) - réussit si la correspondance ne commence pas au début de la chaîne.

Que pensez-vous de:

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

La valeur des blocs bouclés correspond à tous les 2 éléments de l'élément 1.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top