Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
482 views
in Technique[技术] by (71.8m points)

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

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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
^-?(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+)?$

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...