Regulärer Ausdruck für eine 6-stellige Zahl mit optionalen 2 Dezimalziffern [geschlossen]

8

Ich brauche einen regulären Ausdruck für eine 6-stellige Zahl mit optional 2 Dezimalziffern Erlaubte Werte:

%Vor%     
Swapnil 28.01.2013, 14:39
quelle

4 Antworten

10

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.

    
Hui Zheng 28.01.2013 14:58
quelle
4

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.

%Vor%

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. :)

    
Patrick McElhaney 29.01.2013 01:56
quelle
2

Diese R.E. passt alle Ihre Beispiele an und akzeptiert nicht mehr als 6 Ziffern oder 2 Dezimalstellen.

%Vor%     
Teudimundo 28.01.2013 14:43
quelle
0

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%     
Baji Shaik 14.02.2013 14:36
quelle

Tags und Links