Seit ich begann, diese Frage zu schreiben, denke ich, dass ich die Antworten auf jede Frage, die ich hatte, aber ich dachte, ich würde trotzdem posten, wie es für andere nützlich sein könnte und mehr Klärung könnte sei hilfreich.Javascript wird nicht mit Regex teilen
Ich habe versucht, einen regulären Ausdruck mit Lookahead mit der Javascript-Funktion zu verwenden. Aus irgendeinem Grund wurde die Zeichenfolge nicht geteilt, obwohl sie eine Übereinstimmung findet, wenn ich die Übereinstimmung anrufe. Ich dachte ursprünglich, das Problem liege in der Verwendung von Lookahead in meinem regulären Ausdruck. Hier ist ein vereinfachtes Beispiel:
funktioniert nicht:
"aaaaBaaaa".split("(?=B).");
Works:
"aaaaBaaaa".match("(?=B).");
Es scheint das Problem war, dass in dem geteilten Beispiel die übergebene Zeichenfolge nicht interpretiert wurde als regulärer Ausdruck. Die Verwendung von Schrägstrichen anstelle von Anführungszeichen scheint das Problem zu beheben.
"aaaaBaaaa".split(/(?=B)./);
bestätigte ich meine Theorie mit der folgenden dumme schau Beispiel:
"aaaaaaaa(?=B).aaaaaaa".split("(?=B).");
Hat jemand denken, dass es seltsam ist, dass die Match-Funktion voraus, dass Sie einen regulären Ausdruck, während die Split-Funktion nicht der Fall ist?
Ich habe immer die/regex/(no quotes) -Syntax für alles verwendet: match, split, replace. Ich habe nicht bemerkt, dass du in einigen Fällen nicht musst. –
Eigentlich ist es sinnvoll, dass match() eine Regex (was * sonst * würde da passen?) Und split() eine Zeichenkette annehmen, da das Teilen auf einer Zeichenkette wahrscheinlich schneller ist als das Teilen auf einer Regex.Nur wenn Sie eine tatsächliche Regex an split() übergeben, wird das langsamere Regex-Splitting ausgeführt. – Tomalak