什么是可以匹配非零浮点数与任意小数位数的最短正则表达式?

luv*_*ere 8 c# regex numbers match

什么是可以匹配非零浮点数与任意小数位数的最短正则表达式?

它应该接受像这样的数字

-1
-5.9652
-7.00002
-0.8
-0.0500
-0.58000
0.01
0.000005
0.9900
5
7.5
7.005
Run Code Online (Sandbox Code Playgroud)

但拒绝诸如此类的结构

.
.02
-.
-.996
0
-0
0.
-0.
-0.000
0.00
--
..
+
+0
+1
+.
+1.26
,etc
Run Code Online (Sandbox Code Playgroud)

我不需要支持科学记数法,包括e,E等.
顺便说一句,我使用的语言是C#.

jen*_*ram 7

^-?(0\.\d*[1-9]|[1-9]\d*(\.\d+)?)$
Run Code Online (Sandbox Code Playgroud)

编辑更新以反映新要求(最后小数可以为零)

^-?(0\.\d*[1-9]\d*|[1-9]\d*(\.\d+)?)$
Run Code Online (Sandbox Code Playgroud)

(比使用前瞻更短:^-?(0\.(?=[1-9])\d*|[1-9]\d*(\.\d+)?)$.)


EDIT2如果001.000可以通过

^-?(?=.*[1-9])\d+(\.\d+)?$
Run Code Online (Sandbox Code Playgroud)

  • 几乎:拒绝0.10.在第一个`[1-9]之后添加另一个`\ d*`. (2认同)