One thing you might want to keep an eye on is that the bottom of the ascii table has a lot of control characters that can cause funky results. Here the expression that I use allows only "not funky":
^ ([^ \ x0D \ x0a \ x20- \ x7E \ ] *) $
source share