JavaScript正規表現を用いた整数、少数のチェック方法とは?

このQ&Aのポイント
  • JavaScriptでテキストボックスから入力された年齢と身長の値を正規表現を使ってチェックする方法について教えてください。
  • 年齢は0以上の整数で、半角数字が入力されていることをチェックします。ただし、0以外の頭に0が来る数字は許可しません。
  • 身長は0より大きい整数または少数で、半角数字と小数点が入力されていることをチェックします。整数の場合、0以外の頭に0が来る数字は許可しません。少数の場合、最下位の数字は小数点以外の数字であることをチェックします。
回答を見る
  • ベストアンサー

正規表現を用いた整数、少数のチェック

どうかご教授下さい。 現在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("身長を半角数字で正しく入力してください。"); }

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

  • ベストアンサー
  • think49
  • ベストアンサー率59% (285/482)
回答No.1

問題は ^$ を使ってないことで、部分一致になってしまっています。 function chkAge(age){ if(/^(?:0|[1-9][0-9]*)$/.test(age.toString())){ alert('age OK!'); } else { alert("年齢を半角数字で入力してください。"); } } function chkHeight(height){ if(/^(?:[1-9]\d*|0)(?:\.\d*[1-9])?$/.test(height.toString())){ alert('height OK!'); } else { alert("身長を半角数字で正しく入力してください。"); } } chkAge(0); chkHeight("10.0"); chkHeight(10.11); chkHeight(10.11.11); > 0以外の数字があれば最下位の数字が0でも許可してしまう。(例:123.0) 文字列型の変数を渡してください。 chkHeight(10.0); はパスしますが、chkHeight("10.0"); はパスしません。

vividPink
質問者

お礼

稚拙な質問だったにも関わらず 大変解りやすく、的確な回答を頂きましてありがとうございました。 無事に問題を解決することができました。 本当に本当にありがとうございました!!

関連するQ&A

  • javascriptでの正規表現について

    javascript正規表現にて正の整数および小数(半角のみ) を判別したいのですがうまくいきません。どうすればいいのでしょうか。<script language=javascript> function StrCheck(strSrc){ var value = strSrc.value; if (value.match(/[0-999]+¥.[0-99]/)==true){ alert("半角数字のみで入力して下さい"); } </script> ); 以上のようにつくってみましたが、半角でも全角でも「半角を入力してください」というメッセージがでてしまいます。これを全角のみでエラー表示がでるようにしたいのですがどうしたらよいのでしょうか。参考になるWEBページでもあれば教えてください。ご教授の程よろしくお願い申し上げます。

  • 整数かどうかチェックする

    テキストボックスに数字を入力させてボタンを押した時、 その数字が1桁の整数(0から9)でなければエラーメッセージを出すようにしたいのですが、何か簡単なコードはありますか? (5.6などの小数や、"a"や"あ"など数字ではない文字が入力された場合も同様にエラーを出したい) 1つずつ0から9までifでチェックしなければいけないのでしょうか。

  • 入力チェック

    お世話になります。 JavaScriptでの正規表現で入力チェックをしたいのですが、うまくいきません。 以下のようなことをするのにはどうしたらよいのでしょうか? ■小数点のある数字の入力チェック 整数の最大桁数:6桁 少数の最大桁数:2桁 とします。 例:フィールドに以下を入力した場合 120.50 → OK 10000000.1 → NG 整数の桁数がオーバー 150.1478 → NG 小数の桁数がオーバー

  • 入力値が小数なら、整数部・小数部の桁チェックをしたい。

    VB2005環境です。 テキストボックスに数値が入力された時、整数部分が4桁以上か、 小数部分が2桁以上になっている場合、警告メッセージを出したいと 考えています。 具体的には、 0.1→OK 99.9→OK 100.1→OK 0.01→NG 1001.9→NG 0.99→NG 1111→NG テキストボックスは数字以外の入力も許可しており、数字を 入力した場合だけのチェックです。 まずIsNumericで数値判定を行っているのですが、その後、上述の 小数桁チェックをどうしたら良いか悩んでいます。 また、99を入力した場合は99.0、09.1と入力した場合には9.1と、 整数部は一番左側に0があれば消し、小数部は未入力ならば".0"を 追加できたらと思っているのですが、うまくいきません。 実現するために必要な処理は、 ・入力値が数値か ・数値であれば、整数か、小数か ・整数部の桁チェック ・小数部の桁チェック(小数時) ・整数であれば、999.9の形になるよう変換 といったところかなと思うんですが、まず小数チェックで 躓いています。 参考にロジックを交えて教えていただけないでしょうか。 宜しくお願いします。

  • 入力チェックについて

    体重を入力するテキストボックスがあります。 整数部分と小数部分は分けないので、 入力できる種類は半角数字とドットです。 整数部分は3桁まで、小数点以下は第一位までとする 入力チェックをつけたいのですが、 整数部分と小数点部分を別々にチェックするにはどのような命令を使用すればよいでしょうか。 (60, 60.1 , 105 などのパターンが考えられると思います。)

  • 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;   }  } ----------------------------------------------------------- このとき、チェックする整数部分、小数部分の桁数を変数にして汎用性のある関数にしたいのですが、正規表現のなかで変数を使うにはどのようにしたらよいのでしょうか? よろしくお願い致します。

  • 「少数がない場合は整数のみ、少数がある時は、第一

    A1に100 A2に10.5 A3に12.34 と入力しました。 「少数がない場合は、整数のみ、 少数がある時は、第一位まで」と設定したいのですがどうすればいいでしょう? 理想としては、 A1に100 A2に10.5 A3に12.3 とさせたいです。 A列を選択して、セルの書式設定→表示形式→数値で、 「桁区切りを使用する」にチェックを入れると A1に100 A2に11 A3に12 になってしまいますし、 A列を選択して、セルの書式設定→表示形式→数値で、 「桁区切りを使用する」にチェックを入れて 小数点以下の桁数を1にすると、 A1に100.0 A2に10.5 A3に12.3 と今度は、小数点がないA1まで小数点が付いてしまいます。 セルの書式設定→表示形式でユーザー定義を選択し、種類に「#,##0.#」といれましたが A1に100. A2に10.5 A3に12.3 と、整数に点だけついてしまいます。 関数を使うしかないのでしょうか?それもどうやればいいのかわかりません。 今はA3まで入れていますが、実際はたくさんの行まで入れてるし、何行目まで行くのかわかりません。 ご教授よろしくお願いします。

  • 正規表現

    正規表現で身長、体重の入力チェックをしたいのですが、 うまくいきません。 ↓がんばったのですが。。 /^\d\d\d?\.?\d*$/ 整数部3桁まで、小数部はDBで1桁に丸めるので何桁でもOKです。 どなたかアドバイスをお願いします。

  • 正規表現について

    いつもお世話になっております。 早速ですが質問させていただきます。 「数字」+最後に「>」が入力されているかチェックしたいと 思っております。 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
  • java での全角数値を指定する正規表現について

    はじめまして。 javaでの正規表現についての質問です。 現在私は String line = reader.readLine(); if ( line.matches("^[-]?[0-9]*[.]?[0-9]*") ) 上記のような半角の整数、浮動小数点数、マイナスの入力時にTrueとなり、それ以外はFalseとなるようにしています。 ここに「全角の整数、浮動小数点数、マイナス」もTrueとなるように記述したいのですがうまくいきません。 or 条件にて || line.matches("^[-]?[0-9]*[.]?[0-9]*") と、ただ半角の部分を全角に置き換えたところで改善するものではありませんでした。 どなたか良い改善策教えていただけましたら幸いです。

    • ベストアンサー
    • Java

専門家に質問してみよう