JavaScript - 文字列が数値であることを確認する

文字列が数値であるかどうかを確認する方法を紹介します。

1. isNaN() で文字列が数値であることを確認する

isNaN() は、引数として渡された変数が Number 型であるか、文字列であるが数字のみで構成されている場合に false を返します。 !isNaN() が true のとき、変数は数値であると判別できます。

以下の例のさまざまな種類の文字列のうち、最後の3つを除いてすべてが数値として決定されます。

function isNum(val){
  return !isNaN(val)
}

console.log(isNum('1'));  // true
console.log(isNum('+1'));  // true
console.log(isNum('-1'));  // true
console.log(isNum('1.0'));  // true
console.log(isNum('1.1'));  // true
console.log(isNum('1e10'));  // true
console.log(isNum('2e-5'));  // true
console.log(isNum('0xFFFFFF'));  // true
console.log(isNum('Infinity'));  // true
console.log(isNum('-Infinity'));  // true
console.log(isNum(new String('1')));   // true
console.log(isNum(123));               // true

console.log(isNum('NaN'));    // false
console.log(isNum('str1'));   // false
console.log(isNum([1, 2]));   // false

2. Number()で文字列が数値であることを確認する

!!Number(val) は、文字列が数値の場合に true を返します。

Number() は、引数として渡された文字列が数値の場合 Number オブジェクトが返され、数値でなければ NaN が返されます。 !を2回付けるとNaNはfalseになり、Numberはtrueになります。

console.log(Number('10'));    // 10
console.log(!Number('10'));   // false
console.log(!!Number('10'));  // true

console.log(Number('aaa'));   // NaN
console.log(!Number('aaa'));  // true
console.log(!!Number('aaa')); // false

以下の例のさまざまな種類の文字列のうち、最後の3つを除いてすべてが数値として決定されます。

function isNum(val){
  return !!Number(val)
}

console.log(isNum('1'));  // true
console.log(isNum('+1'));  // true
console.log(isNum('-1'));  // true
console.log(isNum('1.0'));  // true
console.log(isNum('1.1'));  // true
console.log(isNum('1e10'));  // true
console.log(isNum('2e-5'));  // true
console.log(isNum('0xFFFFFF'));  // true
console.log(isNum('Infinity'));  // true
console.log(isNum('-Infinity'));  // true
console.log(isNum(new String('1')));   // true
console.log(isNum(123));   // true

console.log(isNum('NaN'));    // false
console.log(isNum('str1'));   // false
console.log(isNum([1, 2]));   // false
codechachaCopyright ©2019 codechacha