jQueryで正規表現を使って数値のチェックをする
実際に使用する際にパターンによって変わってくるので、まとめてみました。
目次
0以上の整数を判定する
もっとも単純な判定から
数値だけで構成されているかどうかをチェックするには
「/^\d*$/」
を使えばOK
これが数値を判定する場合の基本形になります。
数値をチェックする関数を作って実際にチェックしてみる
jQuery
- <script>
- /**
- * 数値チェック
- * val = 入力値
- * 戻り値 数値 = true
- * 数値以外 = false
- */
- function isNumber(val){
- var pattern = /^\d*$/;
- return pattern.test(val);
- }
- </script>
「0123」といれると「true」が戻ってきます
頭の「0」を許容しない場合は「[1-9]」を追加
「/^[1-9]\d*$/」
ただしこのままだと「0」が許可されないので↓のようにする
「/^([1-9]\d*|0)$/」
jQuery
- function isNumber(val){
- var pattern = /^([1-9]\d*|0)$/;
- return pattern.test(val);
- }
「0123」、「00」といれると「false」が戻り
「123」、「0」といれると「true」が戻ります
少数を許可する
頭の「0」を許可する場合は「/^\d*$/」「(\.\d+)?」を追加する
jQuery
- function isNumber(val){
- var pattern = /^\d(\.\d+)?$/;
- return pattern.test(val);
- }
頭の「0」を許可しない場合は「/^([1-9]\d*|0)$/」に「(\.\d+)?」を追加する
jQuery
- function isNumber(val){
- var pattern = /^([1-9]\d*|0)(\.\d+)?$/;
- return pattern.test(val);
- }
「+」、「-」を許可する
「[-]?」「[+,-]?」を「/^」の後に追加することでそれぞれの符号を許可します。
頭のゼロを許可しない、少数の場合は↓
jQuery
- function isNumber(val){
- var pattern = /^[+,-]?([1-9]\d*|0)(\.\d+)?$/;
- return pattern.test(val);
- }
数値チェックパターンリスト
数値チェック正規表現パターン頭のゼロを許可
- 0以上の整数のみ
- /^\d*$/
- 整数 (- のみ許容)
- /^[-]?\d*$/
- 整数 (+, – 許容)
- /^[+,-]?\d$/
- 符号なし小数
- /^\d(\.\d+)?$/
- 符号あり小数 (- のみ許容)
- /^[-]?\d*(\.\d+)?$/
- 符号あり小数 (+, – 許容)
- /^[+,-]?\d(\.\d+)?$/
数値チェック正規表現パターン頭のゼロを許可しない
- 0以上の整数のみ
- /^([1-9]\d*|0)$/
- 整数 (- のみ許容)
- /^[-]?([1-9]\d*|0)$/
- 整数 (+, – 許容)
- /^[+,-]?([1-9]\d*|0)$/
- 符号なし小数
- /^([1-9]\d*|0)(\.\d+)?$/
- 符号あり小数 (- のみ許容)
- /^[-]?([1-9]\d*|0)(\.\d+)?$/
- 符号あり小数 (+, – 許容)
- /^[+,-]?([1-9]\d*|0)(\.\d+)?$/
まとめ
今回実際に使ったjQueryとHTMLは↓
jQuery
- <script>
- $(function(){
- /**
- * 数値チェック
- * val = 入力値
- * pattern = 正規表現
- * 戻り値 数値 = true
- * 数値以外 = false
- */
- function isNumber(val,pattern){
- return pattern.test(val);
- }
- $('.numCheckBtn').on('click',function(){
- var element = $(this),
- val = element.prev().val(),
- pattern;
- switch(element.attr('data-isNumber')){
- case '1': pattern = /^\d*$/;
- break;
- case '2': pattern = /^([1-9]\d*|0)$/;
- break;
- case '3': pattern = /^\d*(\.\d+)?$/;
- break;
- case '4': pattern = /^([1-9]\d*|0)(\.\d+)?$/;
- break;
- case '5': pattern = /^[+,-]?([1-9]\d*|0)(\.\d+)?$/;
- break;
- }
- if(val == ''){
- alert('値が空です');
- }else{
- alert(isNumber(val,pattern));
- }
- });
- });
- </script>
HTML
- <input type="text" name="isNumber" placeholder="数値を入力">
- <button class="numCheckBtn" data-isNumber="5">チェックする</button>
正規表現でのチェックを使うと、使わない場合よりも柔軟に比較ができるようになるので、少しづつでも使うようにしていこう
ではでは〜
コメント一覧
まだ、コメントがありません