The default in MC is case-insensitive (this choice isn't too uncommon). But there seems to be a bug introduced recently (going back to at least 16.0.169). This should succeed:
regex(A, /#^([aeiou])#/,1,0)
and yet fails (A should be output).
Edit: Apparently, in the TR-1 implementation of regular expressions, case-insensitivity applies to only Ordinary characters, so you'll have to include both in your range.
The constructs below are two different things, the first not doing what you think, the second more expensive and doing more than you think:
[A|E|I|O|U|H] (A|E|I|O|U|H)
[A|E|I|O|U|H]: The character class [ ] needs no alternation. Anything inside is just the list or range of characters that you want the RE to match. So [A|E|I|O|U|H] is equivalent to the simpler [AEIOUH|]. Notice that the pipe char is included (the original included it five times), and inside a character class, it is just an ordinary charcter. So the character class [AEIOUH|] matches exactly one character which must be any of A, E, I, O, U, H, or |.
(A|E|I|O|U|H): This is a capture group with alternation. This matches either the character A, and if that fails, match the character E, and if that fails, match the character I, ... and if that fails, match the character H. For single character matches, always use character classes instead of alternation. Alternation is expensive, avoid it whenever possible. The RE engine must often try all possibilities (but this isn't obvious with just this simple RE). Think if it like driving a mile or two down every street, and when you find the street dead-ends, backtracking and trying the next street. Expensive. The other thing this RE is doing is capturing what was matched, via the parenthesis - a capture group. What was matched is remembered, for later use.
So, once the bug is fixed, you'd want:
if(regex([camera],/#^([aAeEiIoOuUhH])#/),[R1],No Vowel)