This is a character class. The "-" specifies a range of characters. Specifically, it specifies the range from "?" to "~" or from ASCII 0x3f to ASCII 0x7e. The "^" specifies the complement of that range. I.e. any characters that are not in the range. As '&' is ASCII 0x26 and not in the range, it matches.
Update:Yeah, what he said!
*sigh* I guess I was a little slow. :-)
-sauoq
"My two cents aren't worth a dime.";