I'm a bit confused, that regular expression looks like it does allow question marks. I checked it, and sure enough, it leaves question marks in my string. Do you mean to make it not allow question marks? If so, remove the question mark, and move the dash that's next to it to the end of the character class, like this:
[!#-9:;=Z_a-z~-]