To Top
《How to check numeric》
Javascriptには、数値かどうかチェックする方法がいくつかあります。
《isNaN》
isNaN関数は、Not a Numberの略で、数値でない場合trueを返し、数値だとfalseを返すので注意が必要です。
isNaN()関数では、空文字とスペース文字とnullのチェックができない。
《isFinite》
isFinite関数は、渡された値が有限数かどうかを判定します。
isFinite()関数では、動きはisNaN()関数と同じで、戻り値だけisNaN()関数と逆になります。
《parseInt》
parseInt関数は、文字列を整数に変換し、変換できない場合はNaNを戻り値として返します。
ParseInt()関数は、戻り値がNaNであることを除けば、ある程度正しい動きをしてくれます。
《parseFloat》
parseFloat関数は、文字列を実数に変換し、変換できない場合はNaNを戻り値として返します。
ParseFloat()関数は、戻り値がNaNであることを除けば、ある程度正しい動きをしてくれます。
《正規表現》
正規表現(Regular Expression)は、文字の組み合わせを照合するために用いられるパターンです。 文字列.match(正規表現)という記述で、今回の正規表現の条件は、strRegExp.match(/[^0-9\.\-]/)==nullで指定しています。 matchの戻り値は、配列で0番目にパターンにマッチした文字列が入ってきます。パターンにマッチしない場合は、nullが返ります。
[^0-9\.\-]は、0~9以外の数字 or .(ドット, 小数点)以外 or -(マイナス)以外にマッチすればその文字列を返します。この正規表現によるチェックだと、「---」や「....」などもOKになってしまいます。
正規表現の条件を厳しくして、符号(-のみ許容)あり、小数点を1回のみ許容した数値のチェックにしたものが、/^[-]?([1-9]\d*|0)(\.\d+)?$/です。
/^[-]?([1-9]\d*|0)(\.\d+)?$/は、先頭だけ-(マイナス)を許容し、その次に(0を続けない)0~9の数字 or 0 その次に小数点を1回のみ その次に0~9の数字が1回以上、という意味です。
この正規表現を使えば数値チェックは十分です。