Ich bin mir nicht sicher über die Terminologie, aber lassen Sie mich versuchen zu erklären, was ich erreichen möchte. Ich habe viel HTML-Code, wobei ich Teile von name- und id-attributen (ua) ersetzen muss.Kombinieren Sie reguläre Ausdrücke ohne Auffüllen der Ergebnisse in Javascript
Diese Attribute können Zeichenfolgen wie VALUE[1][0][question][0]
, VALUE[1][0][answer][0]
, aber auch MEDIA_1
und openMedia(1, '', 'title')
enthalten.
In den Saiten, die wir manchmal brauchen die zweiten und letzten [0]
mit [1]
oder MEDIA_1
mit MEDIA_2
oder openMedia(1, '', 'title')
mit openMedia(2, '', 'title')
und so weiter zu ersetzen.
Um die Dinge einfach (oder nicht) zu halten, habe ich mit dem folgenden regulären Ausdruck kommen:
/(VALUE)\[(\d+)\]\[(\d+)\]\[(.*?)\]\[(\d+)\]|(MEDIA)_(\d+)|(openMedia)\((\d+),/gm
ich einzelne Präfixe zu erfassen ich versucht, wie openMedia
durch die Ergebnisse zu Schleife in der Lage sein, und Tue die Ersetzungen nach dem Präfix. Ich hoffe, ich bin klar genug. Ich verwende den folgenden Code durch die Ergebnisse in einer Schleife:
while ((m = regex.exec(html)) !== null) {
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
console.log(m);
}
Mein Problem ist, dass m manchmal so aussieht:
Array [ "VALUE[1][0][question][0]", "VALUE", "1", "0", "question", "0", undefined, undefined, undefined, undefined, undefined, undefined ]
Array [ "openMedia(1,", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, "openMedia", "1" ]
Wie kann ich ein „unpadded“ Ergebnis zu erhalten? Ich erwarte, dass das Array einfach
zum Beispiel ist.
Ihre Frage scheint zu sein, dass Sie 'undefined' Werte von einem entfernt array: 'arr.filter (x => x! == undefiniert)' – trincot
Optionale geben unbestimmt zurück, wenn sie nicht übereinstimmen. Sie können nur die undefinierten Ergebnisse ausfiltern. Str.match (re) .filter (x => x) ' – epascarello
@trincot hat mich um 30 Sekunden geschlagen ... lachend, dass wir beide x benutzt haben. :) – epascarello