Issue
I am trying to write a Regex that satisfies the below criteria. I tried below one though few of my criteria doesnt match with the below regex.
^([0-9]{1,2})(\.0)|(\.[1-9]{1,2})$
- A decimal number that is of nn.mm (nn,mm can be numbers [0-9])
- If mm is present for example if 01,02,03..09, then the second is not allowed, because first number is 0.
Valid values are `10.00, 10.10,99.12, 12.99, 10.11, 01.10, 00.00, 00.10, 1.1, 0.9, 0.1, 2.3, 1.10, 9.20, 4.56 ....
Invalid values are 00.01, 99.01, 12.09, 10.08, 10.01, 10.02...10.09 (because after decimal point, first digit is 0 which is invalid)
TO be more precise:
[0-9][0-9].0 //valid
[0-9][0-9].[0-9]0 //valid
[0-9].0 //valid
[0-9].[0-9]0 //valid
[0-9][0-9].[0-9]0 //valid
[0-9].0[0-9] //invalid
[0-9][0-9].0[0-9] //invalid
Solution
This regex should give you the results you want:
^[0-9]{1,2}\.(?:00?|[1-9][0-9]?)$
It matches:
^: beginning of string[0-9]{1,2}: 1 or 2 digits\.: a period (.)(?:00?|[1-9][0-9]?): either:00?: a zero, followed by an optional 0; or[1-9][0-9]?: a digit in the range1-9, followed by an optional second digit
$: end of string
Regex demo on regex101
Answered By - Nick
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.