I can't test it right now (site down), but I assume that if I give it the examples 1, 2, 23, 512, 461, 781, it will come up with the regular expression ([0-9]+).
However, it could also have come up with the rule ([0-8]*).
So how does it know which one to choose? Can one also submit counter-examples?
This can't really work 100% without exhaustively giving every string accepted by the regex, or giving every string not accepted by the regex. Regular expressions are essentially a shorthand for doing that.
Since it's impossible to do accurately, it has to use some "common sense" via genetic programming or whatever. In your example, it probably sees that people rarely want [1-8]{1,3}, but that it's a subset of \d+ and goes with that instead.
However, it could also have come up with the rule ([0-8]*).
So how does it know which one to choose? Can one also submit counter-examples?