最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Regex Currency format - javascript - Stack Overflow

programmeradmin6浏览0评论

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
Add a ment  | 

3 Answers 3

Reset to default 12

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.
/^(\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})?)?$
发布评论

评论列表(0)

  1. 暂无评论