数値判定する関数
JavaScript で数値判定を行う関数。isNaNは使い物にならないのでこのような関数を自前で用意する。
Array のインスタンスを弾いているのは、[1] のような引数を防ぐため。[1]を String にキャストすると "1" となり、数値とみなされてしまうのだ。
function isNumber(value) { if(value instanceof Array) return false; //trim value = String(value).replace(/^[ ]+|[ ]+$/g, ''); if(value.length == 0) return false; if(isNaN(value) || !isFinite(value)) return false; return true; }
テスト。
isNumber(1); //true isNumber(0); //true isNumber(-1); //true isNumber("1"); //true isNumber("0"); //true isNumber("-1"); //true isNumber(1.1); //true isNumber(.1); //true isNumber("1.1"); //true isNumber(".1"); //true isNumber(10e-3); //true isNumber(10e+3); //true isNumber("10e-5"); //true isNumber("10e+5"); //true isNumber("10f-5"); //false isNumber("10f+5"); //false isNumber("1 1"); //false isNumber(" 1 1 "); //false isNumber(null); //false isNumber(true); //false isNumber(false); //false isNumber(undefined); //false isNumber("a"); //false isNumber("1a"); //false isNumber(""); //false isNumber(" "); //false isNumber([]); //false isNumber([1]); //false isNumber([1,1]); //false isNumber({}); //false isNumber({a:1}); //false isNumber({a:1, b:2}); //false isNumber(new Object()); //false isNumber(); //false