私は次のRubyフレーバーの正規表現を持っています:
data.to_s.match(/\A[[:digit:]]*+((.|,)[[:digit:]]+)?\Z/) ? true : false
これは、意図したとおりに次の例に対してtrueを返します。
data = "13"
data = "1,3"
data = "13,3"
data = "1.3"
data = ",3"
data = ".3"
私にはわかりませんが、最初の[[:digit:]]の後のアステリックスでも、文字列の先頭に文字を渡すことができるのはなぜですか。
irb > "a3".match(/\A[[:digit:]]*+((.|,)[[:digit:]]+)?\Z/)
=> #<MatchData "a3" 1:"a3" 2:"a">
数字だけに一致させるにはどうすればよいですか?