Regex sollte sein: ^\d{0,6}(\.\d{0,2})?$
(Es hat alle Ihre Proben übergeben)
Aktualisierung:
Um eine leere Zeichenfolge und einen einzelnen Punkt zu vermeiden, ist regex ^(?!\.?$)\d{0,6}(\.\d{0,2})?$
. Der Ausdruck fügt einen negativen Lookahead ?!\.?$
hinzu, der 0 oder 1 Punkt ausschließt.
Ich habe einen Unit-Test auf Fiddle hinzugefügt.
Lass es uns in vier Regexes aufteilen. Mindestens einer dieser vier muss übereinstimmen.
%Vor%Das kann dann wie in einem einzigen Regex kombiniert werden.
%Vor% Fügen Sie dann ein Caret ( ^
) hinzu und kleben Sie ( $
) an den Anfang und das Ende der Zeichenfolge.
Das skaliert nicht sehr gut (z. B. wenn Sie 100 Ziffern mit bis zu 20 nach dem Komma zusammenbringen wollten), aber es funktioniert und es ist relativ einfach zu verstehen.
Wenn Sie keine Regex verwenden müssen, gibt es einfachere Möglichkeiten, dieses Problem zu lösen. :)
Diese R.E. passt alle Ihre Beispiele an und akzeptiert nicht mehr als 6 Ziffern oder 2 Dezimalstellen.
%Vor%Schnelles Java-Beispiel für die Validierung von Strings mit maximaler Länge als 10 d.h. 9 Ziffern mit maximal 3 Dezimalstellen HINWEIS: warum 9 Ziffern anstelle von 10 Ziffern? weil der Dezimalpunkt auch als Zeichen zählt
%Vor%Tags und Links regex stringtokenizer