echo "$var" | grep [^a-zA-Z0-9] >/dev/null
will return a 0 if $var is "bin*" because the grep is only serching for alphabetic characters and numbers.
Plus if you do: echo "$var"
This will return: bin*
However, if you do(without quotes): echo $var
This will return: bin binary ....
If you do want * to be a valid character you can put a (backslash) \ before it in the grep statement. This turns off any special meanings of such characters.