0

我想编写自定义验证器,就像我在下面尝试一样

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"

有更好的方法吗?

4

1 回答 1

0

如果你只想匹配这些字符,你可以使用这个:

[\$@\^`,\|%;\.~\(\)/\\\{\}:\?=\-\+_#!<>&\sA-Z0-9\[\]]+$
于 2012-04-24T00:10:55.153 回答