現在html及びJavascriptの勉強をしております。
そこで、htmlの入力フォームにて「足のサイズ」を入力するというサンプルを作っているのですが、誤入力をなるべく事前検知するフィルターをJavascriptにて実装しようと考えており、下記プログラムを作ってみました。
※html側では、4桁を越える数値の入力は出来ない様にしています。
1: 何も入力されていないとNG
2: 半角数字とピリオド以外はNG
3: 2桁未満はとりあえずNG
4: 最初の入力数値が0はおかしいのでNG
5: 最初の入力数値がピリオドでもおかしいのでNG
6: サイズ1桁は除外したいので、2桁目がピリオドでもNG
var shoes_size = hoge.val(); if (shoes_size == "") { //1 alert("入力NG"); return; } else if ( shoes_size.match(/[^0-9.]/) || //2 shoes_size.length < 2 || //3 shoes_size.slice(0,1) === '0' || //4 shoes_size.slice(0,1) === '.' || //5 shoes_size.slice(1,2) === '.') //6 { alert("入力NG"); return; } //サイズ3桁は基本有り得ないので、1~3桁目が全て数値でもNG if (shoes_size.slice(0,1).match(/[0-9]/) && shoes_size.slice(1,2).match(/[0-9]/) && shoes_size.slice(2,3).match(/[0-9]/)) { alert("入力NG"); return; }
フィルター機能としてはこんな感じなのですが、もっと簡略化出来ないものかと試行錯誤しています。
また、
match(/[^0-9]/) match(/[^0-9]+$/)
この2つの違いが良く分かりませんでした。
恐れ入りますが、同じフィルター条件でもっと整理出来るのか、どなたかアドバイス頂ければと思っています。よろしくお願い致します。
回答4件
あなたの回答
tips
プレビュー