正規表現で数字+>が入力されているかチェックする方法

このQ&Aのポイント
  • 正規表現を使用して、入力された値が「数字+>」の形式かどうかをチェックしたい。ただし、値は小数点を含むこともある。
  • 以下の値が考えられる:123.4, 12.3, 1.2, 123.4>, 12.3>, 1.2>, 1>, 12>, 123>, 1234>。それ以外の場合はエラーとする。
  • PHPのバージョンは4.4.2である。
回答を見る
  • ベストアンサー

正規表現について

いつもお世話になっております。 早速ですが質問させていただきます。 「数字」+最後に「>」が入力されているかチェックしたいと 思っております。 ereg("[^0-9+$>]", $val) とやってみたのですが、ダメでした。 数字の部分は小数点になることもあります。 値として考えられるのは以下のものです。 それ以外(例えば、「12>3」のように間に「>」が入力された場合など)は、エラーとしたいと思っております。 ・123.4 ・12.3 ・1.2 ・123.4> ・12.3> ・1.2> ・1> ・12> ・123> ・1234> よろしくご教示お願いいたします。 <環境> PHP:4.4.2

  • PHP
  • 回答数4
  • ありがとう数1

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

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.3

"^([0-9]+|[0-9]+\.[0-9]+)>?$" とか "^([1-9][0-9]+|[1-9][0-9]+\.[0-9]*[1-9])>?$" ではどうでしょうか。

その他の回答 (3)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.4

"^([1-9][0-9]+|[1-9][0-9]+\.[0-9]*[1-9])>?$" → × "^([1-9][0-9]*|[1-9][0-9]+\.[0-9]*[1-9])>?$" です。

wonder_dct
質問者

お礼

nora1962 さん、ご回答ありがとうございます。 ご提示いただいたもので動作いたしました。 大変恐縮なのですが、小数点第一位と第二位の正規表現の場合 ereg("^([0-9][0-9]*|[0-9][0-9]+\.[0-9]*[1-9])") で大丈夫でしょうか。

  • HIRSYU
  • ベストアンサー率51% (45/87)
回答No.2

深く考えてなかった。 ANo.1で回答したヤツだと、小数点から始まる数値もOKになります。 しかも、カンマを複数含む場合もOKになってしまいます・・・ので、間違いです。

  • HIRSYU
  • ベストアンサー率51% (45/87)
回答No.1

[ ]の意味を調べなおしましょう。 "^[0-9\.]+>$"ですね。

関連するQ&A

  • 正規表現について

    お世話になります。 いろいろ調べてテストもしたのですが、 どうしてもわからないのでヒントをください。 やりたいことは、PHPでパスワードチェックを したいのです。 a-z A-Z 0-9 _- 以外の文字が入ったらエラーを返したい のですが、方法がわかりません。 そもそもpreg_matchをつかうのか、eregを使うのか・・・ どうか、よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPの正規表現eregの使い方

    PHP初心者です。 eregを使った入力チェックをしたいのですが、思うように処理できません。 入力は半角英数字のみを受け付け、その他の入力の場合はエラー処理を行いたいと思ってます。 if (!ereg("^[0-9]+$", $user)) { // 半角英数字以外はエラー処理 } 参考のものがあったのでその通りやってみましたが、全角文字も受け付けてしまい困っています。 記号の意味もよくわかりません。 また、これに加え5文字以上8文字以内という条件も付けたいです。 よろしくお願い致します。

    • 締切済み
    • PHP
  • 正規表現 文中空白可能

    ereg関数を使用してフォームの「ふりがな」のチェックをしていますが、ふりがなの文中に空白が含まれていてもチェックにひっかからないようにする(下記コードで「ふりがなOK」と表示する)には、どのようにすればよいのでしょうか? 私が、現在、トライしているコードです。 if (!ereg("^([あ-ん])+([あ-んー\s])*$", $applicant_kana)) { echo 'ふりがなエラー'; } else { echo 'ふりがなOK'; } 上記のコードで、「これは ふりがなです」と入力した場合に「ふりがなOK」と表示させたいのです。文中に空白が存在しても「ふりがなOK」と表示されるように\sを使用しましたが、現在のコードでは文中に空白があると「ふりがなエラー」と表示されてしまいます。 mb_eregではなく、eregを使用していますが、私の環境ではプログラムの動作に問題は起きていません。mb_eregでも検証しましたが、動作に違いはありませんでした。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 正規表現を用いた整数、少数のチェック

    どうかご教授下さい。 現在JavaScriptによるプログラミングを行っています。 テキストボックスから入力された年齢、身長の値を 正規表現を用いて下記の条件をチェックしようとしていますが上手くいきません。 [条件] ●年齢● 0以上の整数。 半角数字。 0以外の頭に0が来る数字は許可しない。(例:00、012) ●身長● 0より大きい整数または少数。 半角数字、小数点。 整数の場合0以外の頭に0が来る数字は許可しない。(例:00、012) 少数の場合最下位の数字は小数点、0以外のものである。 [現状] ●年齢● 半角数字があれば半角数字以外を許可してしまう。(例:a1、1あ) 0以外の頭に0が来る数字を許可してしまう。(例:00、012) ●身長● 0以外の数字があれば最下位の数字が0でも許可してしまう。(例:123.0) 2つ以上の小数点を許可してしまう。(例:12.3.4、12..3) 上記以外にも自分で気付いていない問題があるかもしれませんが どうか助言頂きたく思います。 宜しくお願いします。 if(age.match(/(0|[1-9][0-9]*)/)){} else{ alert("年齢を半角数字で入力してください。"); } if(height.match(/([1-9][0-9]*|[0-9]+([\.][0-9]+)?[1-9]$)/)){} else{ alert("身長を半角数字で正しく入力してください。"); }

  • ereg での正規表現がうまくできません。。。

    お世話になっております。 いま、変数$a に"PDCA,PDCB,1.3AE,漢字,カタカナ,カタカナ2"が入っているとします。 そこで、チェックボックスのnameとvalueもそれぞれ、PDCA,PDCB,1.3AE・・・と名前をつけています。 最初にこのチェックボックスに複数チェックを入れて、mysqlデータベースへひとつのカラムに保存します。そして、再編集ページで、保存した変数$aを読み込み、$aにチェックボックスのnameと同じ文字があったら、再編集ページを開いたときにはじめにチェックを入れておきたいのです。 例えば、PDCA,PDCB,カタカナ にチェックをいれて$aに"PDCA,PDCB,カタカナ"(コンマ含む文字列)として保存します。 そして、再編集ページの <input type "checkbox" name="a[]" multiple value="PDCA" <?php if(ereg("[$a]+,'PDCA')){print('checked');}?>>PDCA としています。php.ini mbstring.func_overload = 7にしていますので、日本語も大丈夫だと思うのですが。(mb_eregを使うとなぜかエラーとなる) 例のようにすると、関係ないチェックボックスもチェックされていたりでたらめです。何かいい手はないでしょうか。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 正規表現

    いつもお世話になっております。 度々で申し訳ありませんが、正規表現について教えていただきたいと思います。 「数字」または「-」プラス「数字」の場合のみOKになるように するにはどのように書けばよろしいでしょうか。 たとえば・・・ 10 → OK -10 → OK 53 → OK -53 → OK +53 → NG 45- → NG <環境> PHP:4.4.2

    • 締切済み
    • PHP
  • エスケープ文字そのものにマッチさせる正規表現

     お世話になっております。  PHPの正規表現でエスケープ文字\そのものにマッチさせる正規表現がなかなか作れません。Perl互換のpreg_replaceなども試してみましたがダメでした。エスケープ文字そのものを削除したいのですが、どうしたらよいでしょうか? $value = ereg_replace ('\\', '', $value);//ダメでした。 $value = preg_replace ('/\\/', '', $value);//同様にダメでした。 $value = preg_replace ('/[\\]/', '', $value);//同様にダメでした。  文字列中に\が入っていたり、単独で\があった場合は必要ないので削除するといった感じです。 $value = ereg_replace ('[][}}{)(!"#$%&\\~|*+,/\^\'<>`;:?\\=]', '', $value); これでいけるかと思ったのですが、\だけ残ってしまいます。最後辺りの\\で\文字それ自体にマッチするかと思うんですが…。 わかる方がいらしたらおしえてください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPのpreg系正規表現が正しいかチェックる方法

    お世話になります PHPのpreg系正規表現で入力された値が 正規表現として正しいかどうか調べたいのですが どのようにすれば良いのでしょうか? 「正しい」とは 導き出したい値が正しいかではなく 正規表現の記述方法が正しいかどうかです 「[]」と「{}」が正しく閉じているかチェックするだけでいいのかな?? チェック用の関数などあったら最高です (例) 正しい [0-9]{1,3} 上記をpreg系関数に入れると1~3文字の半角数字という意味になります 誤っている [0-9{1,3} 上記をpreg系関数に入れると、括弧が閉じていないので Compilation failedになります お忙しい中恐縮ですが 分かる方お助け下さいませ

    • ベストアンサー
    • PHP
  • 正規表現について

    どう質問したらいいか分かりませんが頑張ってみます。 コントローラのほうに params[:money] で得た値に正規表現で、入力必須、半角数字でないとエラーが出るように設定したいのですが正規表現の書き方がよく分かりません。 ぜひ教えてください。

  • JavaScriptの正規表現について

    お世話になります。 HTMLでテキストに入力された数値のチェックを下記のようにJavaScriptで行っています。 ---------------------------------------------------------  function check_num(obj) {')   obj_w = document.form_name.elements[obj];')   if(obj_w.value.match(/^\d{0,1}(\.\d{1,3})?$/)){    return 0;   else{    alert("測定値は整数部分1桁、小数部分3桁までの正の数値を入力して下さい。")    obj_w.focus();    return 1;   }  } ----------------------------------------------------------- このとき、チェックする整数部分、小数部分の桁数を変数にして汎用性のある関数にしたいのですが、正規表現のなかで変数を使うにはどのようにしたらよいのでしょうか? よろしくお願い致します。