2013-03-27 14 views
5

Ich möchte mein Währungsfeld mit Regex validieren. Ich möchte die folgenden Mustereinträge zulassenRegex für Integer- oder Fließkommazahl mit zwei Dezimalstellen

1.23 
1 
.45 
0.56 
56.00 

Kein Komma sollte erlaubt sein. Ich habe versucht \d+(\.\d\d), aber es erlaubt nur erste, vierte und fünfte Einträge. \d+(?:\.\d\d+)? ermöglicht alle außer dem dritten.

+0

Haben Sie versucht \ d * (\. \ D *)? – Melanie

+0

Nein. Lass mich es versuchen. –

+0

Wie sind diese Währungen? Ich sehe nur Schwimmer. – Bergi

Antwort

7

Verwenden Sie \d* anstelle von \d+ vor dem Dezimaltrennzeichen, um null oder mehr Ziffern zu entsprechen. Fügen Sie auch Anker hinzu (^ und $) oder es wird so lange bestehen, wie eine Übereinstimmung verfügbar ist. Dies würde auch eine leere Zeichenkette, so bei Bedarf validieren Sie einen Look-Ahead, um sicherzustellen, können mindestens eine Ziffer ist:

^(?=.*\d)\d*(?:\.\d\d)?$ 
+0

Ihre Lösung funktioniert gut. aber es erlaubt '1.254' und' 23.1'. Ich möchte nur zwei Dezimalstellen zulassen. Entweder gibt es keine Dezimalzahl oder nur zwei Dezimalstellen –

+0

@ KrishanuDey, die mir unklar war; Ich habe es so aktualisiert, dass '\ d +' '' –

+0

@ExplosionPills: That Worked ist. :) Danke vielmals. –

3

Regexes for floating-point numbers ist ein gelöstes Problem:

\d*\.?\d+ 

Für mindestens zwei Dezimalstellen:

(\d*\.\d)?\d+ 

Um es verständlicher zu machen:

\d+|\d*\.\d{2,} 

Und für genau zwei Dezimalstellen:

\d+|\d*\.\d{2} 

Je nach Sprache, vergessen Sie nicht, den Ausdruck zu anchor, so dass sie die gesamte Zeichenfolge übereinstimmen muss.