我试图验证表单字段:item_type中的输入不包含特殊字符或数字。
型号:
class Item < ApplicationRecord
has_many :order_items
validates_format_of :item_type, :with => /[^A-Za-z\s]/
end主计长:
def update
@item = Item.find(params[:id])
if @item.update_attributes(params_check)
redirect_to items_path
else #this is where I can use ActiveRecord errors object?
redirect_to edit_item_path(@item)
flash[:error] = "You must enter valid details"
end
end此正则表达式只验证:item_type输入是否包含特殊字符或整数。在Rubular中,它与特殊字符/整数匹配。
如果删除“^”以使正则/A\s/,则允许所有输入通过模型。但是,在Rubular中,它选择了我想要传递的所有常规字符串/空格字符。
这基本上是我第一次接触正则表达式,在这一点上我很困惑。我已经花了好几个小时去尝试我所能想到的每一种方式。如果有人能帮我,我会非常感激的。
发布于 2016-12-23 21:57:30
在Rubular中,/[A-Za-z\s]/只分别选择每个字母或空格。在您的代码中,您希望确保整个字符串符合模式,而不仅仅是一个单独的字符。
使用
/\A[A-Za-z\s]*\z/ 若要匹配0+字母/空格,请执行以下操作。将*替换为+以匹配1次或更多次。
如果不允许使用前导/尾随空格,请使用
/\A[A-Za-z]+(?:\s+[A-Za-z]+)*\z/(这将不允许空字符串),如果字母之间的空格只能是单个,则使用
/\A[A-Za-z]+(?:\s[A-Za-z]+)*\z/https://stackoverflow.com/questions/41308211
复制相似问题