(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.