本文介绍了那是什么能比得上非零浮点数的任何小数位数的正则表达式最短?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



这应该接受像

$ B $号b

  -1 
-5.9652
-7.00002
-0.8
-0.0500
$ -0.58000 b $ b 0.01
0.000005
0.9900
5
7.5
7.005

但拒绝建设,如

 
0.02
- 。
-.996
0
-0
0
-0。
-0.000
0.00
-
..
+
+ 0
+1
+。
+1.26



我不需要为科学记数法支持与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 +)?$ 


What's the shortest regex that can match non-zero floating point numbers with any number of decimal places?

It should accept numbers like

-1
-5.9652
-7.00002
-0.8
-0.0500
-0.58000
0.01
0.000005
0.9900
5
7.5
7.005

but reject constructions such as

.
.02
-.
-.996
0
-0
0.
-0.
-0.000
0.00
--
..
+
+0
+1
+.
+1.26
,etc

I do not need support for the scientific notation, with e , E and such.
The language I'm using is C#, by the way.

解决方案
^-?(0\.\d*[1-9]|[1-9]\d*(\.\d+)?)$


EDIT Updated to reflect new requirements (last decimals can be zero)

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

(Shorter than using lookahead: ^-?(0\.(?=[1-9])\d*|[1-9]\d*(\.\d+)?)$.)


EDIT2 If e.g. 001.000 can pass

^-?(?=.*[1-9])\d+(\.\d+)?$

这篇关于那是什么能比得上非零浮点数的任何小数位数的正则表达式最短?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 08:18