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 に答える