1

テキスト入力を検証しようとしています。テキストフィールドにスペースがあると失敗することに気付きました。

validates_format_of :role, :with => /\A[a-zA-Z]+\z/, :message => "field should only have letters"

スペースを許可するには何を変更する必要がありますか? ありがとう

アップデート:

テキストフィールドに特殊文字を許可する必要があるため、質問を数字以外に変更しました。

4

2 に答える 2

5

一致させる文字にスペースを追加するだけです (現時点ではa-zA-Z)。したがって

/\A[a-zA-Z ]+\Z/

は任意の空白文字 (タブと改行を含む)\sに一致することに注意してください。

アップデート

^数字以外のすべてを許可するには、角括弧の先頭にキャレットを置くことによって作成される「否定文字クラス」を使用できます。

/\A[^0-9]+\Z/

または、\d(「数字」の場合)は と同等であるため[0-9]

/\A[^\d]+\Z/
于 2012-10-05T09:06:56.767 に答える
3

Ruby 正規表現は\s空白文字としてサポートしています。したがって、それをキャラクタークラスに追加できるはずです。

:with => /\A[a-zA-Z\s]+\z/

証拠:

/\A[a-zA-Z\s]+\z/ =~ 'hello world' #=> true
/\A[a-zA-Z]+\z/   =~ 'hello world' #=> false
于 2012-10-05T09:03:44.063 に答える