2 Stimmen

Javascript regex für Betrag

Ich versuche, eine Regex für einen Betrag zu erhalten:

BELIEBIGE ZIFFER + PERIOD (mindestens null, höchstens eins) + BELIEBIGE ZIFFER (mindestens null, höchstens zwei [wenn möglich, entweder null ODER zwei])

Was ich habe, ist:

/^\d+\.\{0,1}+\d{0,2)+$/

...offensichtlich nicht funktioniert. Beispiele für das, was ich zu tun versuche:

123 gültig

123,00 gültig

12.34.5 ungültig

123.000 ungültig

Es wird versucht, einen Betrag mit oder ohne Punkt zu finden. Wenn der Punkt enthalten ist, darf er nur einmal vorkommen und nicht mehr als zwei Ziffern dahinter.

19voto

Matt Ball Punkte 343109

Machen Sie den Dezimalpunkt und 1 oder 2 Nachkommastellen zu einer eigenen optionalen Gruppe:

/^\d+(\.\d{1,2})?$/

Tests:

> var re = /^\d+(\.\d{1,2})?$/
  undefined
> re.test('123')
  true
> re.test('123.00')
  true
> re.test('123.')
  false
> re.test('12.34.5')
  false
> re.test('123.000')
  false

2voto

Vivin Paliath Punkte 90791

Haben Sie es schon versucht?

/^\d+(\.\d{1,2})?$/

El ? macht die Gruppe (\.\d{1, 2}) fakultativ (d.h. 0 oder 1 Mal übereinstimmend).

1voto

slandau Punkte 22936

Würde so etwas funktionieren?

// Check if string is currency
var isCurrency_re    = /^\s*(\+|-)?((\d+(\.\d\d)?)|(\.\d\d))\s*$/;
function isCurrency (s) {
   return String(s).search (isCurrency_re) != -1
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X