我需要Java中的一个正则表达式来检查双精度字符串的表示形式是否需要6个小数位。小数点前的值可以为正或负。

1.123456 - correct
-123123123.123456 - correct
123123123.123456 - correct
-123123123.123456 - correct

1.12345 - wrong
-.123456 - wrong
.123456 - wrong
.12345 - wrong
123456 - wrong


我试过了:

^\s*(?=.*[1-9])\d*(\.\d{6})?\s*$


但它并不能覆盖所有边缘。

最佳答案

尝试这个:

^\s*(-|\+)?(0|[1-9]\d*)\.\d{6}\s*$


请参见live demo

仅当第一个数字是点之前的唯一数字时,它才允许将其为零,例如0.123456可以,但01.123456则不能。 \.\d{6}恰好需要6个小数位。

关于java - 正则表达式纬度,要求保留小数点后6位,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51124450/

10-10 18:35