Frage

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

Ich möchte das in:

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

Ich benutze derzeit: ________.split(/({.*?})/);

Dies schlägt jedoch fehl, wenn Curly Brace der erste Charakter ist wie im Fall:

'{0}<blah>'

was sich in:['', '{0}', '<blah>'] ... ein 3 Element -Array, keine 2

Was ist los mit meinem Regex?

Vielen Dank!

War es hilfreich?

Lösung

An Ihrem Regex ist nichts auszusetzen, aber es gibt ein Problem damit, wie Sie Split verwenden. Split gibt ein Array zurück, das auf einem Trennzeichen basiert. Wenn der Trennzeichen zuerst ist, gibt es Ihnen das Zeug links und rechts vom geteilten Element.

Überprüfen Sie einfach, ob das erste Element == '', und entfernen Sie es, wenn es sich um handelt.

Andere Tipps

Dies sollte es tun:

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

Das negative Lookahead - (?!^) - Nachfolger, wenn das Match nicht am Anfang der Zeichenfolge beginnt.

Was halten Sie von:

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

Der Wert der lockigen Blöcke beträgt alle 2 Elemente aus dem Punkt 1.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top