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.
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.
Share Improve this question edited Aug 14, 2012 at 4:05 painotpi 6,9962 gold badges39 silver badges72 bronze badges asked Aug 14, 2012 at 3:32 Adam LevittAdam Levitt 10.5k27 gold badges88 silver badges145 bronze badges 1- 1 If you're using a regular expression to validate the input, there is no need for a key event listener. You only need to validate the input when the user has finished entering characters, until then you really don't care what the value is (e.g. the user may copy and paste from elsewhere, then edit what they pasted). – RobG Commented Aug 14, 2012 at 3:45
3 Answers
Reset to default 12Something 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.
/^(\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
I used the ma for decimal separator. Here my friends:
^([0]?(,\d{1,2})?|([1-9]{1,3})?((\.\d{3})*|([1-9])*)?(,\d{1,2})?)?$