提问者:小点点

使用常规表达式格式进行Rails 5验证[重复]


我想用正则表达式验证一个数字字段-

喜欢

REGULAR_EXPRESSION_VALUE = ?
validates :current, allow_blank: true, format: {with: REGULAR_EXPRESSION_VALUE}

正数或负数以及浮点数除外

实例

10(除)

10.15(例外)

-10(除)

-10.15(例外)

测试(不例外)


共3个答案

匿名用户

您可以使用以下正则表达式来验证数字。我是用java写代码的,你可以相应的转换。

public static Boolean isNumber(String item) {
            String pattern = "^-?[0-9]\\d*(\\.\\d+)?$";
            return item.matches(pattern);
}

匿名用户

拉维的回答有很好的正则表达式。这是你的代码

/\A[-+]?[0-9]*\.?[0-9]+\z/

Rails更喜欢使用\A或\z而不是^or$

这就是原因

匿名用户

根据这个答案(正则表达式-允许负浮点数和正浮点数),你可以使用这个正则表达式:

/^[-]?[0-9]*\.?[0-9]$/

我建议你读一些文件:https://www.regular-expressions.info/floatingpoint.html

我想您需要使用字符串而不是float类型,对吗?如果可以在数据库中使用数字格式,则可以使用:http://guides.rubyonrails.org/active_record_validations.html#numericality