Ruby 数値であるかを判定する

Ruby 数値であるかを判定する

Rubyで、数値であるかを判定するソースコードを記述してます。「正規表現」を使用した結果を二重感嘆符「!!」で「true」か「false」に変換することで可能です。

環境

  • OS windows11 home
  • ruby 3.1.3p185

整数であるかを判定

整数であるかを判定するには、
1. 「to_s」で数値を文字列化
2. 正規表現で先頭が「+」と「-」は許可で「0-9」で「.」のみで構成されているかを判定
3. 結果を「!!」で「nil」でない場合は「true」を返す
ようにして判定します。

!!(数値.to_s =~ /^[+-]?[0-9]*[\.]?[0-9]+$/)

※「!!nil」は「false」が返ります。

実際に使用してみます。


p !!( 10.to_s =~ /^[+-]?[0-9]*[\.]?[0-9]+$/ ) # true

p !!( 0.to_s =~ /^[+-]?[0-9]*[\.]?[0-9]+$/ ) # true

p !!( 010.to_s =~ /^[+-]?[0-9]*[\.]?[0-9]+$/ ) # true

p !!( -10.to_s =~ /^[+-]?[0-9]*[\.]?[0-9]+$/ ) # true

p !!( 1.1.to_s =~ /^[+-]?[0-9]*[\.]?[0-9]+$/ ) # true

p !!( -1.1.to_s =~ /^[+-]?[0-9]*[\.]?[0-9]+$/ ) # true

p !!( +1.1.to_s =~ /^[+-]?[0-9]*[\.]?[0-9]+$/ ) # true

p !!( '12.3'.to_s =~ /^[+-]?[0-9]*[\.]?[0-9]+$/ ) # true

p !!( '1.2.3'.to_s =~ /^[+-]?[0-9]*[\.]?[0-9]+$/ ) # false

p !!( '-'.to_s =~ /^[+-]?[0-9]*[\.]?[0-9]+$/ ) # false

p !!( '-0.'.to_s =~ /^[+-]?[0-9]*[\.]?[0-9]+$/ ) # false

p !!( 'abc'.to_s =~ /^[+-]?[0-9]*[\.]?[0-9]+$/ ) # false

判定されていることが確認できます。