)$Īnd finally, we close the parentheses and anchor the regex to the end of the line with the dollar sign, just as the caret anchors to the beginning of the line. So this matches everything above 0 and below 1. This matches any number that starts with one or more 0 characters (replace + with * to match zero or more zeros, i.e.25), followed by a period, followed by a string of digits that includes at least one that is not a 0.
Parentheses are used to group multiple expressions separated by or-bars.Īnd the second part: 0+\.** For purposes of evaluation of this expression, It has higher precedence than everything else, and effectively joins two regular expressions together. The pipe character is an " or-bar" in this context. The 0* at the start handles leading zeros, so 005 = 5. So our 2.0 would be matched, but 0.25 would not. This matches any integer or any floating point number above 1. The opening parenthesis is there because of the or-bar, below. The caret matches the null at the beginning of the line, so preceding your regex with a caret anchors it to the beginning of the line. Let's break the expression down into parts that are easier to digest. The same thing can be expressed in Basic RE, but almost everything understands ERE these days. Note that this second one is an Extended RE.
And while we're at it, we'll add support for leading zeros on integers (i.e. 0.25), as well as case where your pattern has a decimal part that is 0. 2.5 or 3.3̅), cases where your pattern is between 0 and 1 (i.e. If you want to match real numbers (floats) rather than integers, you need to handle the case above, along with normal decimal numbers (i.e. I don't know how MVC is relevant, but if your ID is an integer, this BRE should do: ^*$