You've done so much to add the input validation, have you considered adding
input translation as well?
I realize that input translation is a more general function than validation
but, since you have all the infrastructre in place you could add another
whos output is used to replace the field value.