4

我目前正在使用以下正则表达式来验证我的 html 输入表单字段中的货币:

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

但是,它允许通过以下值:13000.234.12

这不是一个有效值。以下是我想允许的有效值:

有效的

125
1.25
1000.15
700.1
80.45
0.25

无效的

130.1.4
21.......14

感觉应该有一个标准的正则表达式模式,想法?

旁注:我正在通过事件键侦听器阻止字母数字字符和美元符号,因此它们已经无法输入,这应该会使这个问题更容易一些。

4

3 回答 3

12

像这样的东西应该工作:

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

它匹配:

1.00
1
0.23
0.2
.2

它不匹配:

.
1.1.
于 2012-08-14T03:37:04.847 回答
1
/^(\d*?)(\.\d{1,2})?$/

所以它是(开始)(任何数量的数字,甚至为零),(。然后只有数字,一个或两个,但不必在那里)结束

于 2012-08-14T03:38:41.317 回答
1

我使用逗号作为小数分隔符。这里我的朋友:

^([0]?(,\d{1,2})?|([1-9]{1,3})?((\.\d{3})*|([1-9])*)?(,\d{1,2})?)?$
于 2015-02-14T18:52:25.827 回答