1

我想要一个正则表达式来验证 DECIMAL 数字:

有效的 DECIMAL 数字是:

+123
123
-123
+123.0000
+123,123.999
.0234
+1123,233,34

无效的 DECIMAL 数字是:

+1233+
-1233_
+12.233.33

有没有人可以帮助解决这个问题

4

5 回答 5

2

这个更好:

^[+\-]?\d+(,\d{3})*(\.\d*)?$

加号或减号,可选地,后跟任意数量的数字,可选地后跟任意数量的,123部分,可选地后跟小数和更多数字,这将处理除带前导小数的数字之外的任何内容。

^[+\-]?(\d+(,\d{3})*(\.\d*)?|\.\d+)$

添加该其他选项允许具有前导小数的数字,必须后跟数字。

于 2012-10-03T12:28:17.747 回答
1

这适用于所有人:

+123
123
-123
+123.0000
+123,123.999
.0234
+1123,233,34

检查演示:

^[+\-]?(\d+(,?\d)*(\.\d*)?|\.\d+)$

正则表达式演示

于 2012-10-03T12:23:25.053 回答
1

取决于您的正则表达式支持。

^([-+])?(\d+)?(\.\d+)?$

可选 + 或 -、数字、可选 ',' 后跟更多数字。不幸的是,也会匹配空字符串。

于 2012-10-03T12:36:50.747 回答
1

我认为这是你能得到的最简单的:

^[+-]?\d*\.?\d+$

小数点后总是需要数字。利用这一事实可以简化问题。

更新:起初我没有注意到您还需要处理逗号。这是一个简单的版本,允许在小数点左侧使用逗号。每个逗号前后必须至少有一个数字,但除此之外没有强制执行任何规则(这似乎是您的示例数据的重点)。实际上,最后一个逗号后需要两位数。

^[+-]?(\d+(,\d)?)*\.?\d+$

于 2012-10-03T12:50:43.843 回答
0

你可以用这个

^([-+] ?)?[0-9]+(,[0-9]+)?$
于 2012-10-03T12:36:27.277 回答