• ベストアンサー

7桁の半角数字かどうかのチェック

初歩的な質問で失礼ですが if (ereg("([0-9]{7})",$str)) { $strが7桁の数字であるときの処理 } else { $strが7桁の数字でないときの処理 } でうまく動作しません。 何が悪いんでしょうか。eregですか?{7}ですか?それとも俺の頭ですか?

noname#15014
noname#15014
  • PHP
  • 回答数3
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
noname#18290
noname#18290
回答No.1

> 何が悪いんでしょうか。eregですか?{7}ですか?それとも俺の頭ですか? eregと、貴方の頭かな(笑) 冗談なので無視してください :) $str1 = '123456'; $str2 = '1234567'; $str3 = '12345678'; $str4 = '1234567abc'; $str5 = 'ABC1234567abc'; $str2から$str5は全てeregにマッチします。 ちゃんと判定するには、 if (strlen($str) == 7 && ctype_digit($str) {  //真の時の処理 } else {  //偽の時の処理 } かな。

その他の回答 (2)

noname#18290
noname#18290
回答No.3

括弧が閉じてなかったので訂正します 誤 if (strlen($str) == 7 && ctype_digit($str) { 正 if (strlen($str) == 7 && ctype_digit($str)) { どうしてもeregを使いたければ >if (ereg("^([0-9]{7})$",$str)) { とすればよろしいかと思います。

noname#15014
質問者

お礼

ereg使わなくても出来ることに気が付かなかったです… やっぱり悪いのは俺のあた(略 ありがとうございました。

  • selenity
  • ベストアンサー率41% (324/772)
回答No.2

別に if (ereg("^[0-9]{7}$",$str)) { でよいのでは?

noname#15014
質問者

お礼

正規表現勉強しなきゃ駄目ですね。 ありがとうございました。

関連するQ&A

  • 電話番号の入力チェック

    ハイフン付きの電話番号のチェックをしようとしています。いろいろ調べていますがうまくいきません。5桁までの半角数字-5桁までの半角数字-5桁までの半角数字という書式のチェックを考えています。 if (ereg("^[0-9]{1,5}-?[0-9]{1,5}-?[0-9]{1,5}$", $str )) { return true; } else { return false; } で中途半端になってチェックされます。 間違っているのか?他に書き方があるのか?教えてください。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • 半角カタカナの入力チェックを作りたいです

    入力フォームで入力された文字に対して半角カタカナかチェックをしたいです。 function CheckHalfSizeKatakana($str) {  if (mb_ereg("^[ア-ン゛゜]+$",$str)) {    return true;  } else {    return false;  } } としたのですがうまくいきません。 PHP4です。

    • ベストアンサー
    • PHP
  • 5桁の数字…

    初めての質問でここでいいのかわかりませんが、教えてください。 5桁の数字が2つあり、それぞれa[1]…a[5]、b[1]…b[5]に格納する。 対応する桁どうし(a[1]とb[1])を比較して一致する桁の個数を求めるプログラムを擬似コードで表したいのです。 { 2つの桁の数を配列a,bに読み込む; count=0; i=i+1; while(i<=5) { if(a[i]==b[i])(??); else 誤ったデータの処理; } countの値を出力する; } ??の部分には何をいれればよいでしょう? また他のところでも間違いがあればご指摘お願いいたします。

  • 数字を1桁なら半角、2桁以上は全角にしたい

    表示したい数字が1桁もしくは2桁でHTML表示を等幅指定で合わせたいので 数字を1桁なら半角、2桁以上は全角にしたいと思っています。 下のように記述して、思い通りの動きはしているのですが もう少しスマートに記述できればと思い質問させていただきます。 みなさんなら、どう記述するか、ご教示ください。 $no = 1; # 1桁の場合、半角から全角にする if ($no == 0) { $no2 = "0"; } if ($no == 1) { $no2 = "1"; } if ($no == 2) { $no2 = "2"; } if ($no == 3) { $no2 = "3"; } if ($no == 4) { $no2 = "4"; } if ($no == 5) { $no2 = "5"; } if ($no == 6) { $no2 = "6"; } if ($no == 7) { $no2 = "7"; } if ($no == 8) { $no2 = "8"; } if ($no == 9) { $no2 = "9"; } if ($no >= 10) { $no2 = "$no"; } print "$no2";

    • ベストアンサー
    • Perl
  • 有効数字二桁

    初歩の初歩の質問です。 「有効数字二桁」って、具体的にどうすればいいんでしょうか? 学校の授業でもちゃんと説明された覚えがなく、今まで何となく答えてきたのですが、これは一度ちゃんとした方がいいと思い質問させて頂きます。 0.60 6.0 60 6.0×10の二乗 0.12 1.2 12 1.2×10の二乗 これらは全部有効数字二桁の表し方として正しいですか? また、私なりには「0以外の数字が出てきたところから2桁」という風に考えていたのですが、問題を解いていると0.03が「3.0×10のマイナス二乗」と表されていました。0.030とすると間違いなのでしょうか? また、約分の仕方についてですが 有効数字二桁の次の桁を四捨五入する (例:3.45→3.5 11.2→11 0.3817→0.38) という考え方で正しいんでしょうか。 ネットで調べてみましたが、説明が小難しくてよくわかりませんでした。どなたか易しく簡潔に教えていただけないでしょうか。

  • 様々な桁の数字を、一様の桁になおす関数

    エクセル2010を使用しているものです。 現在各セルに様々な桁の数字が入力されています。 例    2012   354861   811021354   80011687   5447845   741741 これらの数字を、頭に0をつけて全て12桁に直したいです。 例だと、2012    →000000002012      354864   →000000354864      811021354 →000811021354 どのような関数を作ればこのような処理が一括でできるでしょうか?教えてください。よろしくお願いします。

  • 数字3桁のチェック

    C♯環境(.net2.0)です。 文字列が数字3桁で構成されているか確認したいと思っています。 「001」等、頭に0があってもokです。 マイナス等の記号が入っていたらNGです。 現在は、lengthが3か見てから、TryParseでintに出来るか見ている のですが、もう少しシンプルなやり方はないものでしょうか。 正規表現とかで出来るものですか? ご教授いただければ幸いです。 宜しくお願いします。

  • PHP 正規表現 数字又は数字以外を判別

    下記コードですが、 「数字以外が含まれています。」と表示されるはずなのに「数字です。」と表示されてしまいます。どこがおかしいかお分かりの方おられますか? $num1 ="123"; $num2 ="a"; $num3 ="123"; if($num1 != "" or $num2 != "" or $num3 != "") { if($num1 == "" or $num2 == "" or $num3 == "") { if(!ereg("^[0-9]+$", $num1) or !ereg("^[0-9]+$", $num2) or !ereg("^[0-9]+$", $num3)) { print "数字以外が含まれています。\n"; } } } else { print "数字です。\n"; }

    • 締切済み
    • PHP
  • ACCESS のVBAですが、頭がアルファで後の3桁が数字のチェックをしたい

    頭がアルファで後の3桁が数字、つまり a234 x999 z001 こうしたコードが入ってきます これをチェックしたいのですが If  myField  Like  "*A999*"  Then のようなコーディングをしたいのですが "*A999*" の部分の書き方の質問です よろしくお願いします

  • 有効数字3ケタについて

    3556円を有効数字3ケタに端数処理しなさいと言われました。 この場合正解は 3550円ですか? 3560円ですか?

専門家に質問してみよう