使用Regex的Ruby验证器不起作用

时间:2011-08-26 18:21:09

标签: ruby-on-rails regex ruby-on-rails-3

嗨,我有一个红宝石正则表达式,我使用了Rubig http://rubular.com/r/RRc8twB6NL用于检查定价的小数10.00。我让它在Rubular上工作,但在我的应用程序中,这段代码不起作用:

validates_format_of :price, :with=>/^([0-9]{1,}\.{0,}[0-9]{0,2})$/

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

如果您只想让价格为一位数然后为零,则需要正则表达式

/\A[1-9]0*\.\d\d\z/

如果在小数点之前允许任何数字,则为

/\A[1-9]\d*\.\d\d\z/

如果分数部分是可选的,则它是

/\A[1-9]0*(\.\d\d)?\z/
/\A[1-9]\d*(\.\d\d)?\z/

如果你想允许美元符号(可能中间有空格),那么它是

/\A(\$\s*)?[1-9]0*\.\d\d\z/
/\A(\$\s*)?[1-9]\d*\.\d\d\z/
/\A(\$\s*)?[1-9]0*(\.\d\d)?\z/
/\A(\$\s*)?[1-9]\d*(\.\d\d)?\z/

答案 1 :(得分:0)

检查10.00:

/^10\.00$/

检查10.00 - 99.99:

/^[1-9]\d\.\d{2}$/