PHP4で半角のアルファベット小文字(a〜z),数字(0〜9),アンダーバー(_)をチェックする処理を行おうと思っています。以下のように書くと、”abcdあ”という文字列が何故か通ってしまいます。原因及び通らないような記述方法を教えてくださるようお願いします。

$rcd = ereg(”[a-z0-9_]{4,20}”, $ID);

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/08/09 14:00:46
  • 終了:--

回答(1件)

id:jxk No.1

jxk回答回数11ベストアンサー獲得回数02004/08/09 14:47:33

ポイント50pt

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k09.htm

PHP 基礎編9 - 正規表現、マッチ、置き換え、ereg、eregi、eregi_replace - SAK Streets

上記の式だと、[a-z][0-9][_]どれかを4文字以上20桁までOKという意味になるので、

”abcdあ”はOKで通ってしまいます。

多分処理としては、[a-z][0-9][_]以外をNGにするんですよね?

でしたら

ereg(”[^_a-z0-9]”, $ID)   ※[a-z0-9_]以外が一文字でもあったらヒット

の式を通ったらNGにする、としてはどうでしょう。

id:kawasald

なるほど〜。

原因、解決法ともにわかりやすかったです!

どうやら教えていただいた方法で解決しそうです。ありがとうございました!

2004/08/09 15:05:26

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません