Вы можете добавить метод is_numeric?
к строковому классу:
class String
def is_numeric?
true if Float(self) rescue false
end
end
p "123".is_numeric? # true
p "abc".is_numeric? # false
Использование Float()
вместо регулярного выражения обрабатывает некоторые странные случаи, которые вы, возможно, не захотите считать «числовыми», например +123
или -.3
.