I agree with Andrew, the use of regex is for detecting regular languages not for calculations and decide on the result. I would convert the string to an integer and then compare the boundaries.
Any language with "if" statements and one stack/heap is much more powerful than regex automatons, that is why regexs languages are a substet of turing machines ones.
I think regex are overused and misunderstood. Most of the time they are not needed and cause very confusing code. In fact, regex languages may vary depending on the language they belong to
As analogy, C# language is very different from C++ but both are turing complete (Both have jump statements (if, while, etc) and can allocate, read and write memory. So both can solve the same kind of problems (category) but the syntax and concepts behind them are different.
The same thing happens with regex notations. Perl and C# may use different notation/languages for matching expressions for a given text. Some extensions have been added to those notations to support more complex languages. But if you use those extension then the new regex is not regex anymore. In that case I would use control statements of the host language (if, while, variables(. It is the natural way of doing computations.