If you only consider ASCII specialchars, you can simply enumerate them 
in a character class:

/\A[!-\/:-@\[-`\{-~]*\z/

This matches any string that is empty or consists only of the characters

!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

However, since this regex is hard to read and requires knowledge of the 
ASCII table, it's probably better to use the POSIX classes mentioned by 
Brian or property classes (\p{} syntax):

/\A[\p{ASCII}&&\p{Graph}&&\p{^Alnum}]*\z/

The "&&" means intersection and the "^" means negations. That is, you're 
selecting all ASCII characters which are visible (Graph property), but 
not alphanumeric.

See http://www.ruby-doc.org/core-1.9.3/Regexp.html for explanations of 
the syntax.

-- 
Posted via http://www.ruby-forum.com/.