Ruby on rails 带有正则表达式的非键盘字符自定义验证器

Ruby on rails 带有正则表达式的非键盘字符自定义验证器,ruby-on-rails,ruby,regex,validation,Ruby On Rails,Ruby,Regex,Validation,我想像下面尝试的那样编写自定义验证器 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]\]]\\$@^`,|%;.~()\/{}:?\[=\]\+\-_#!

我想像下面尝试的那样编写自定义验证器

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
ActiveRecord::Base.class\u eval do
定义自我验证字符(*属性名称)
验证每个(属性名称)do记录、属性名称、值|
除非值为0.0?
正则表达式=/^[[a-zA-Z\][0-9]\]\\$@^`,\%~()\/{}:?\[=\]\+\-_#! <代码>/^[[a-zA-Z\][0-9]\]\\$@^`,\%~()\/{}:?\[=\]\+\-_#! <代码>“©gfdgfd 0543”


更好的方法是什么???

如果您只想匹配这些字符,可以使用以下方法:

[\$@\^`,\|%;\.~\(\)/\\\{\}:\?=\-\+_#!<>&\sA-Z0-9\[\]]+$
[\$@\^`、\\\%.~\(\)/\\\\{\\\:\?=\-\+\\\\\\\\\\\\\\\\\\\\\\\\\!&\sA-Z0-9\[\]]+$

/^[\$@\^`、\\\%\.~\(\)\/\\\\\\\\\\\\\\:\?=\-\+\\\\\\\\\\\\\\\!&\sa-zA-Z0-9\[\]+$/
这个例子。但为什么我的正则表达式是错的?你错过了一些逃跑。。。i、 e.关于${}?
[\$@\^`,\|%;\.~\(\)/\\\{\}:\?=\-\+_#!<>&\sA-Z0-9\[\]]+$