前提・実現したいこと
Ruby on Railsでフォームを作成しており、
整数部3桁、小数部3桁の入力チェックを実装しようとしています。
rateの型はdecimal(6,3)です。
例
入力ok
999
0.999
123.456
入力ng
1234
0.1234
12.1234
012.345
123.4560
この様な感じで正規表現で入力値をチェックしたいのですが、上手くいきません。
https://rubular.com/
このサイトで
/\A([0-9]{0,3}|0)(.[0-9]{1,3})?\z/
上記の正規表現の確認をした際は、きちんと数字を弾けたのですが
実際にmodelのvalidatesに追加して動作すると
0.1234という値でバリデーションにひっかかりません。
※1234という値だとひっかかります。
ご回答よろしくお願いします。
ソースコード
validates :rate, presence: true, numericality: true, format: { with: /\A([0-9]{0,3}|0)(.[0-9]{1,3})?\z/, message: 'は整数部分3桁小数部分3桁で入力してください' }
補足情報(FW/ツールのバージョンなど)
Ruby 2.6.3
Rails 5.2.3
回答2件
あなたの回答
tips
プレビュー