Validation 通过长度限制和真正的十进制格式验证数字

Validation 通过长度限制和真正的十进制格式验证数字,validation,numbers,decimal,Validation,Numbers,Decimal,我想用正则表达式验证数字。 我的有效号码是: 123456789012345.123 0.0 0.00 0.000 000 097654 05978.7 .657665 5857. 或 或 小数点前必须是1到最多15个数字,小数点后必须是最多3个数字;负数是可选的 无效数字为: 123456789012345.123 0.0 0.00 0.000 000 097654 05978.7 .657665 5857. 我找到了这个正则表达式,但无法设置数字长度限制: ^-?(([1-9]\d

我想用正则表达式验证数字。
我的有效号码是:

123456789012345.123
0.0
0.00
0.000
000
097654
05978.7
.657665
5857.

小数点前必须是1到最多15个数字,小数点后必须是最多3个数字;负数是可选的

无效数字为:

123456789012345.123
0.0
0.00
0.000
000
097654
05978.7
.657665
5857.
我找到了这个正则表达式,但无法设置数字长度限制:

 ^-?(([1-9]\d*)|0)(\.0*[1-9](0*[0-9])*)?$

代替*使用{a,b},其中a是前面的最小数,b是最大数。没有最小值/最大值时省略a或b。

我自己找到了解决方案

^-?(([1-9])([0-9]{1,14})?|0)(\.[0-9]?[0-9]?[1-9])?$

当我编辑top正则表达式以限制小数点之前仅接受15位数字时,它不能匹配^-?([1-9]\d){1,15}| 0)(\.0*[1-9](0*[0-9])*)$