我想要一个正则表达式来验证DECIMAL数字:
有效的DECIMAL号码是:
+123
123
-123
+123.0000
+123,123.999
.0234
+1123,233,34
无效的DECIMAL号码是:
+1233+
-1233_
+12.233.33
是否有人可以提供帮助
答案 0 :(得分:2)
这样更好:
^[+\-]?\d+(,\d{3})*(\.\d*)?$
加号或减号,可选地,后跟任意数量的数字,后跟可选的任意数量的,123
部分,后跟可选的小数和更多数字,这将处理除了具有前导小数的数字之外的任何数字。
^[+\-]?(\d+(,\d{3})*(\.\d*)?|\.\d+)$
添加其他选项允许带有前导小数的数字,必须后跟数字。
答案 1 :(得分:1)
这适用于所有人:
+123
123
-123
+123.0000
+123,123.999
.0234
+1123,233,34
查看演示:
^[+\-]?(\d+(,?\d)*(\.\d*)?|\.\d+)$
<强> Regex Demo 强>
答案 2 :(得分:1)
取决于您的正则表达式支持。
^([-+])?(\d+)?(\.\d+)?$
可选+或 - ,数字,可选','后跟更多数字。 不幸的是,还会匹配空字符串。
答案 3 :(得分:1)
我认为这是最简单的:
^[+-]?\d*\.?\d+$
小数点后总是需要数字。利用这一事实可以简化问题。
更新:起初我没有注意到你还需要处理逗号。这是一个简单的版本,允许逗号在小数点的左侧。每个逗号之前和之后必须至少有一个数字,但除此之外不强制执行任何规则(这似乎是示例数据的重点)。 实际上,在最后一个逗号后需要两位数。
^[+-]?(\d+(,\d)?)*\.?\d+$
答案 4 :(得分:0)
您可以使用此
^([-+] ?)?[0-9]+(,[0-9]+)?$