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-9]+|[0-9]+). This regular expression matches an optional sign, that is either followed by zero or more digits followed by a dot and one or more digits (a floating point number with optional integer part), or that is followed by one or more digits (an integer).
A better regex would be /^\d*\.?\ d+$/ which would force a digit after a decimal point. @Chandranshu and it matches an empty string, which your change would also solve.
To validate decimal numbers in JavaScript, use the match() method. It retrieves the matches when matching a string against a regular expression.
^-?(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+)?$
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With