Adam Levitt
Adam Levitt

Reputation: 10476

Regex Currency format - javascript

I'm currently using the following regex to validate currency in my html input form fields:

/[1-9]\d*(?:\.\d{0,2})?/

Howevever, it is allowing the following value through: 13000.234.12

This is not a valid value. Here are valid values that I want to allow through:

VALID

125
1.25
1000.15
700.1
80.45
0.25

INVALID

130.1.4
21.......14

It feels like there should be a standard regex pattern out there for this, thoughts?

Side note: I'm preventing alphanumeric characters and dollar signs via the event key listener, so they already will not be able to be entered, which should make this problem a little easier.

Upvotes: 4

Views: 12177

Answers (3)

Mattia Peterle
Mattia Peterle

Reputation: 31

I used the comma for decimal separator. Here my friends:

^([0]?(,\d{1,2})?|([1-9]{1,3})?((\.\d{3})*|([1-9])*)?(,\d{1,2})?)?$

Upvotes: 1

Gareth Parker
Gareth Parker

Reputation: 5062

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

So it's (Start) (Any amount of numbers only, even zero), (. and then numbers only, one or two, doesn't HAVE to be there though) End

Upvotes: 1

Blender
Blender

Reputation: 298582

Something like this should work:

^(\d*\.\d{1,2}|\d+)$

It matches:

1.00
1
0.23
0.2
.2

It doesn't match:

.
1.1.

Upvotes: 12

Related Questions