R, 7575 72 bytes
function(s,x=tabulate(utf8ToInt(tolowery=utf8ToInt(s))%%32*(y>64),12226)[97:122])cat(x[!!x],sep="")
Prints the result. For invalid input, prints nothing.
-3 bytes thanks to Dominic van Essen.
Test harness taken from pajonk's answer.