Fix regexps to use case-insensitivity correctly

The regexp /[A-z]/ matches all alphabets, but also six non-alphabetic characters, as demonstrated by ("A".."z").to_a.join
=> "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz"

I've fixed them by using [A-Za-z] instead, or by making the whole regexp case-insensitive. Note that I'm not 100% sure if some of those regexps should actually match the non-alphabets as well (underscore being a possible candidate), so please check that before merging :)