什么是可以匹配非零浮点数与任意小数位数的最短正则表达式?
什么是可以匹配非零浮点数与任意小数位数的最短正则表达式?
它应该接受像这样的数字
-1 -5.9652 -7.00002 -0.8 -0.0500 -0.58000 0.01 0.000005 0.9900 5 7.5 7.005
但拒绝诸如此类的结构
. .02 -. -.996 0 -0 0. -0. -0.000 0.00 -- .. + +0 +1 +. +1.26 ,etc
我不需要支持科学记数法,e,E等。
顺便说一句,我使用的语言是C#。
^-?(0\.\d*[1-9]|[1-9]\d*(\.\d+)?)$
编辑更新以反映新要求(最后小数可以为零)
^-?(0\.\d*[1-9]\d*|[1-9]\d*(\.\d+)?)$
(比使用前瞻更短: ^-?(0\.(?=[1-9])\d*|[1-9]\d*(\.\d+)?)$
。)
EDIT2如果例如001.000
可以通过
^-?(?=.*[1-9])\d+(\.\d+)?$
这是我经常使用的那个:
(\+|-)?([0-9]+\.?[0-9]*|\.[0-9]+)([eE](\+|-)?[0-9]+)?
在PHP示例中使用:
输出:
Array ( [0] => 1.234e4 [1] => [2] => 1.234 [3] => e4 )
-?(?!0)\d+(\.\d+)?
注意:如果你的regexp匹配器没有完成,请记住放^。
请问为什么“最短”? 预编译器RegExp或与非匹配组相同的可能更快。 零测试也可能更快。
您可能希望考虑这些变化 。