benchmark
I think you can safely say a for loop is faster.
I do admit that a regexp looks cleaner in terms of code. If it’s a real bottleneck then use a for loop, otherwise stick with the regular expression for reasons of “elegance”
If you want to go for simplicity then just use
function isVowel(c) {
return ['a', 'e', 'i', 'o', 'u'].indexOf(c.toLowerCase()) !== -1
}