我想驗證文本輸入。我注意到,如果文本字段中有空格,它會失敗。Ruby on Rails:除了validates_format_of中的數字之外的任何內容
validates_format_of :role, :with => /\A[a-zA-Z]+\z/, :message => "field should only have letters"
我需要更改以允許空格?由於
更新:
更改的問題,但任何數字,因爲我需要讓在文本字段中的特殊字符。
我想驗證文本輸入。我注意到,如果文本字段中有空格,它會失敗。Ruby on Rails:除了validates_format_of中的數字之外的任何內容
validates_format_of :role, :with => /\A[a-zA-Z]+\z/, :message => "field should only have letters"
我需要更改以允許空格?由於
更新:
更改的問題,但任何數字,因爲我需要讓在文本字段中的特殊字符。
只需添加一個空間,你匹配(目前a-z
和A-Z
)的字符。因此
/\A[a-zA-Z ]+\Z/
注意\s
將匹配任何空白字符(包括製表符和換行符)。
更新
要允許除了數字,你可以使用一個「否定字符類」,它是通過將一個插入符號^
在方括號的開始做:
/\A[^0-9]+\Z/
或者,由於\d
(爲 「數字」)相當於[0-9]
,
/\A[^\d]+\Z/
感謝您的快速回復。我剛剛注意到我實際上需要的只是數字,我會怎麼做呢?因此,A-Z,a-z,\和特殊字符(如(*)和^)。謝謝 – Jazz
沒問題,我已經更新了我的答案。您應該編輯您的問題以反映這一變化。 –
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
感謝您的快速回復。我剛剛注意到我實際上需要的只是數字,我會怎麼做呢?因此,A-Z,a-z,\和特殊字符(如(*)和^)。謝謝 – Jazz
@Alex Wayne爲什麼是\ A需要?以rubular測試這個例子似乎失敗了,例如「test9」。 –
'\ A'只是表示字符串的開始,一個錨點。 ''test9「'會失敗,因爲正則表達式不允許任何數字。 –
這是更的正則表達式問題。你可以允許這樣的空格/ \ A [a-zA-Z _] + \ z /。注意這不是一個解決方案,而是一個指示你如何去做 –