具有固定有效位数的浮点数的正则表达式

时间:2014-10-07 08:11:29

标签: regex significant-digits

我试图为具有固定最大值(例如4)的有效数字的浮点数找到正则表达式。

这应符合:

- 123.4
- 12.34
- 1.2
- 223
- 0.1234
- 0.000001234
问题是,点之前和之后的非零数必须总共最多为4。

我试图分解问题并找到案例的解决方案:

- 0.xxxx
- 0.000xxx
- xxxx

但我没有找到针对在点之前和之后找到有效数字的情况的解决方案。 (examples: 1.23 2.345


更新: 我想我找到了一个解决方案:

^(?!(?:.*[1-9](\.?[0-9]){4,}))([-+]?\d+\.?\d*?)$

2 个答案:

答案 0 :(得分:1)

^(?!(?:.*?[1-9]){5,})([-+]?\s*\d+\.?\d*?)$

试试这个。这只会匹配4个或更少的有效数字。不要忘记放置标记gm。请参阅演示。

http://regex101.com/r/hQ1rP0/28

答案 1 :(得分:0)

我想你想要这样的东西,

^0*(?:[1-9]\d{0,3})?(?:\.0*(?:[1-9]\d{0,3})?)?$

DEMO