I have two groups, one required and one optional, but if the optional is set and is invalid, the whole thing should not be matched. Currently if the optional group is invalid it stills accepts it if the required group is valid.
Here is what i have so far: Direct link to regexp
Regexp : ([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}(\-[a-zA-Z]{1,50})?)
Should match
0.0.0
0.0.0-a
1.5.89-lorem
Mustn't match (even partially)
a.2.3 -> 'a' is not a number
1.5.89:lorem -> only '-' is valid to separate version and letters
1.2.3-4 -> '4' is not letter(s)
5.6.8.9 -> '9' is not letters and '.' used instead of '-'
8.k.2-j -> 'k' is not a number
7895.5.8 -> '7895' is 4 digit long, 3 is the max