(a) The proper OR code is the vertical line or "pipe":
a|e|o|i|u
– this works for entire words:
and|or|not|nor
(b) For proper searching for a set of disjunct characters, you don't need to individually OR them, you can put them into an OR set; each single character in it will match:
[aeoiu]
(c) To search for a consecutive set of characters, you don't have to list them all. Rather than
[0123456789]
you can use this notation:
[0-9]
This notation is for characters, not for numbers, so search for
[10-20]
will search for the individual characters '1', '0 to 2', '0' and not for anyrthing from 'ten to twenty'
(d) .. The above notation is useful, but searching for just digits is so common that they decided to assign a shortcut code to it:
\d
in itself will match any single digit.
So that's how you would do it with GREP. … Thing is, under normal circumstances you don't even need this. If you are using a font that has lowercase "oldstyle" or "medieval" digits as default, and the font comes with a separate style of "lining" digits, all you have to do is change the default in your paragraph style setup — it's in the Opentype Features panel, under "Figure Style".
If you are using a font that does not come with Opentype enabled digit styles, it will not work. But then GREP will not work either, 'cause there is nothing to change these digits to.