2020.3.18

数値のチェック処理について(正規表現)

JavaScriptである文字列を数値かどうか判定しようとした時、isNaN()関数は値がnullの時も数値として判断してしまい、Number.isInteger()メソッドはあくまで整数値のチェックでそもそも文字列は数値と判断してくれず、なかなか、これを使えばいいというものがありません。

このため、JavaScriptでちゃんとした数値のチェックを実装する場合、正規表現を利用します。

目次

  • 正規表現での数値のチェック方法
  • 正の整数(ゼロパディング許容)
  • 正の整数
  • 正負の整数
  • 正負の少数

正規表現での数値のチェック方法

正規表現で値の内容を判定するには test() メソッドを使います。


/^\d+$/.test(123)

数値のチェックの度に正規表現を記述するのは変更があった時が大変なので、これを共通の関数などで呼び出すようにします。


function isNumber(x) {
    return /^\d+$/.test(x);
}

以下、正規表現の例です。

正の整数(ゼロパディング許容)

正の整数、ゼロ埋め許容

/^\d+$/

\d は [0-9] とイコールなので以下のように書くことも可

/^\[0-9]+$/

実行結果

"0123"   > true
"123"    > true
123      > true
0        > true
null     > false
"+1"     > false
"-1"     > false
"0123.4" > false
"123."   > false
"123.0"  > false
"0.0"    > false
"-123.4" > false

正の整数

正の整数、ゼロ埋め不可

/^([1-9]\d*|0)$/

実行結果

"0123"   > false
"123"    > true
123      > true
0        > true
null     > false
"+1"     > false
"-1"     > false
"0123.4" > false
"123."   > false
"123.0"  > false
"0.0"    > false
"-123.4" > false

正負の整数

正と負の整数、ゼロ埋め不可

/^([-]?[1-9]\d*|0)$/

実行結果

"0123"   > false
"123"    > true
123      > true
0        > true
null     > false
"+1"     > false
"-1"     > true
"0123.4" > false
"123."   > false
"123.0"  > false
"0.0"    > false
"-123.4" > false

正負の少数

正と負の少数、ゼロ埋め不可

/^([-]?[1-9]\d*|0)(\.\d+)?$/

実行結果

"0123"   > false
"123"    > true
123      > true
0        > true
null     > false
"+1"     > false
"-1"     > true
"0123.4" > false
"123."   > false
"123.0"  > true
"0.0"    > true
"-123.4" > true

JavaScript】関連記事