我想编写自定义验证器,就像我在下面尝试一样
ActiveRecord::Base.class_eval do
def self.validates_characters(*attr_names)
validates_each(attr_names) do |record, attr_name, value|
unless value.nil?
regex = /^[[a-zA-Z\][0-9]\]]\\$@^`,|%;.~()\/{}:?\[=\]\+\-_#!<&\s]*$/
record.errors.add(attr_name, 'invalid characters') unless regex.match(value)
end
end
end
end
/^[[a-zA-Z\][0-9]\]]\\$@^`,|%;.~()\/{}:?\[=\]\+\-_#!<&\s]*$/
我在 rubular 中尝试了这个正则表达式 => ,但它有一些错误。
我只想允许这个字符:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
1234567890
$@^`,|%;.~()/\{}:?[]=-+_#!<>& and spaces
所以这个字符串无效=>" © gfdgfd 0543"
有更好的方法吗?