2013-07-05 21 views
5

regulären Ausdruck benötigt, die haben: (.) ​​Regulärer Ausdruck für Preisvalidierung

  1. Maximal 8 Stellen vor dezimal
  2. Maximal 4 Ziffern hinter dem Komma Punkt
  3. Dezimalpunkt ist optional

maximal gültige Dezimalzahl ist 8 Stellen vor dezimal und 4 Nachkommastellen So 99999999,9999

Die regelmäßige rexpression I ^\ d {0,8} versucht haben, [.]? \ D {1,4} $ für 123456789 und mehr als dies nicht möglich. bedeutet, dass es mehr als 8 Ziffern braucht, wenn der Dezimalpunkt nicht verfügbar ist.

hier getestet: http://regexpal.com/

Vielen vielen Dank im Voraus!

+0

Preis kann nicht negativ sein? –

+0

Nein, nicht für meinen Fall! – user2338652

Antwort

7
^\d{0,8}(\.\d{1,4})?$ 

Sie können die gesamte dezimal

+1

Sie benötigen einen umgekehrten Schrägstrich vor der Periode (Punkt) zu platzieren: das heißt '(. \ \ D {1,4}) ? 'sonst akzeptieren Sie JEDES Zeichen einschließlich einer anderen Ziffer. –

5

Sie können dies versuchen:

^\d{1,8}(?:\.\d{1,4})?$ 

oder

^[1-9]\d{0,7}(?:\.\d{1,4})?$ 

Wenn Sie nicht wollen, eine Null als erste Ziffer haben.

Sie können dies zulassen, wenn Sie wollen: (.1234)

^[1-9]\d{0,7}(?:\.\d{1,4})?|\.\d{1,4}$ 
+0

Vielen Dank für Ihre super schnelle Antwort! Ich sehe, dass es für .12345678 versagt. Es sollte nur .1234 nehmen. – user2338652

+0

@ user2338652, wenn Sie den Wert erwarten max 4 Ziffern werden nach dezimal point..you nicht ** ** errors..just Dont't zu ** Runden des Eingangs, wenn seine mehr als 4..that führen könnte * annehmen sollte * die Eingabe akzeptieren, wenn es Ihre criteria..and ** valiadation! passen tut = Spiel ** – Anirudha

+0

@ user2338652 FYI, die Antwort, die Sie angenommen haben, auch „nicht“ auf '.123456789'. –

3

Jede der oben genannten optionalen machen für mich nicht funktioniert hat. Nur das funktioniert für mich

^([0-9]{0,2}((.)[0-9]{0,2}))$