JavaScript: Ungültiger Quantifizierer in Regex

8

Die Regex wird im Handumdrehen erstellt, aber ich habe sie an Firebug ausgegeben:

%Vor%

Der Fehler ist

%Vor%

Ich bin mir nicht sicher, wo ich anfangen soll.

Der eigentliche Code ist:

%Vor%

UPDATE: Per Bennor McCarthy's Anweisungen habe ich den Code folgendermaßen geändert:

%Vor%

Firebug sagt mir das immer noch:

%Vor%

EIN WEITERES UPDATE Sieht so aus, als ob ich es doppelt streichen müsste und das hat das Problem gelöst!

endgültiger Code

%Vor%     
Stephen 14.09.2010, 22:09
quelle

2 Antworten

13

Das Problem ist das +, das ein Quantifizierer ist, dem Sie entkommen müssen.

Verwenden Sie stattdessen:

%Vor%

oder in einer Zeichenfolge:

%Vor%

Wenn Sie das Literal $ gefolgt von einem Newline abgleichen möchten, müssen Sie das $ mit \ (oder \ innerhalb eines Strings - siehe meinen letzten Kommentar darunter für eine Erklärung).

Hier sind einige Informationen zu Quantifizierern .

    
Bennor McCarthy 14.09.2010, 22:12
quelle
3

Ein Quantifizierer bedeutet "wie viele". Am gebräuchlichsten ist "*", was null oder mehr bedeutet. Der Quantifizierer "+" bedeutet eins oder mehrere.

Wenn Sie einen Fehler über einen ungültigen Quantifizierer bekommen, bedeutet das fast immer, dass Sie einen Quantifizierer haben, wo er nicht hingehört. Zum Beispiel, da sie "wie viele" bedeuten, müssen sie sich offensichtlich auf etwas beziehen. Wenn Sie einen am Anfang eines Musters oder einer Gruppe platzieren, denkt die Regex "wie viele _von was?"

In Ihrem speziellen Fall haben Sie ein "+" unmittelbar nach dem Gruppierungszeichen "(", weshalb Sie den Fehler erhalten. Sie müssen entweder das "+" entkommen lassen, damit es nicht als Quantifizierer behandelt wird, oder etwas hinzufügen In diesem Fall ist es wahrscheinlich der erste, wenn Sie versuchen, ein tatsächliches "+" - Zeichen zu finden.

    
Bryan Oakley 14.09.2010 22:26
quelle

Tags und Links