Ich versuche, eine Zahl am Ende eines Strings mit einer Regex zu finden. Zum Beispiel könnte die Zeichenfolge wie folgt aussehen:
%Vor%Dies ist, was ich bisher habe, aber es scheint die gesamte Zeichenfolge zu entsprechen, wenn kein Dezimalpunkt vorhanden ist:
%Vor%Ich meine das:
\-?
: optionales "-" Symbol \d+
: 1 oder mehr Ziffern .?
: optionaler Dezimalpunkt \d+?
: optional 1 oder mehr Nachkommastellen $
: Übereinstimmung am Ende der Zeichenfolge Was vermisse ich?
.
entspricht einem beliebigen Zeichen. Sie müssen es als \.
Versuchen Sie Folgendes:
%Vor%Das ist:
%Vor% Wie Sie auf MDNs Regex-Seite sehen können, ist +?
eine nicht-gierige Übereinstimmung von 1 oder mehr, keine optionale Übereinstimmung von 1 oder mehr.
Mehrere Probleme:
[a-z]
). \.
\d+?
bedeutet eigentlich: Übereinstimmung mit mindestens einer Ziffer, aber wenn die Regex nach diesem Teil des Musters weiterläuft, versuchen Sie, die verbleibende Regex so früh wie möglich abzugleichen ("lazy "oder" nicht-gierige Übereinstimmung "). In deinem Fall macht dieses ?
einfach nichts. Um diese Ziffern wirklich optional zu machen, verwenden Sie \d*
. (\.\d+)?
Zusammenfassung: /-?\d+(\.\d+)?$/
Tags und Links javascript regex