phpの正規表現について
phpの正規表現についてです。
よく入力されたメール・パスワードを判定するのに正規表現で判定させますが、今回の指定する条件は…
・半角英数、0~9の組み合わせ
・使用禁止文字は \ ' @ [ ] の5つ
・入力は8文字以内
例
if(ereg("^[0-9a-z\!\"\#\$\%\&\(\)\=\-\~\|\{\}\;\:\+\*\,\.\/\<\>\?\_]{1,8}$", $pw)){
記号の意味でよくわからないのがあるのですが、
{ }は文字数を指定するものでよろしいのでしょうか?
{1,8} は1~8文字までという意味?
\が入ると認証が通ってしまってい、困っています。
ユーザーの入力 MySQLの取得結果
例 123\ → データが入らない
\123 → 123
\\123 → \123
123\123 → 123123
\\ → \
といった不具合になってしまい、MySQL側でも入力されたデータと異なったデータが入ってしまいます。\が入っても認証されないようにするにはどうすればいいんでしょうか?
正規表現の参考にしたサイトは
http://itbtech.itboost.co.jp/php/php_06.php です。アドバイスよろしくお願いいたします。