Können Sie mehrere Regex-Übereinstimmungen in JavaScript abrufen?

8

Ich habe den folgenden regulären Ausdruck in JavaScript, der Strings wie "12: 23: 34: 45" und "12:23"

entspricht %Vor%

Das Problem, das ich habe, ist, dass, wenn ich mir die Spieldaten anschaue, nur drei Treffer zurückgegeben werden. z.B. Für 12: 23: 34: 45 sind die zurückgegebenen Matches:

%Vor%

d. Die erste erfassende Gruppe meldet nur ihren letzten Wert. Ich hätte gerne die Spiele:

%Vor%

Ist das möglich?

    
Dan 04.07.2011, 11:53
quelle

1 Antwort

11

Nein, dies ist in JavaScript (und den meisten anderen Regex-Varianten außer Perl 6 und .NET) nicht möglich. Wiederholte Erfassungsgruppen speichern immer den letzten übereinstimmenden Wert. Nur .NET und Perl ermöglichen Ihnen den Zugriff auf diese Übereinstimmungen (zB match.Groups(i).Captures in .NET).

Sie benötigen zwei Durchläufe, die ersten, um die Zeichenfolgen zu finden, die zweiten, um die Übereinstimmungen zu durchlaufen und diese nach ihren Unterwerten zu durchsuchen.

Oder machen Sie die Regex explizit:

%Vor%     
Tim Pietzcker 04.07.2011, 11:57
quelle

Tags und Links