我正在尝试验证文本输入。我注意到,如果文本字段中有任何空格,它就会失败。
validates_format_of :role, :with => /\A[a-zA-Z]+\z/, :message => "field should only have letters"
我需要更改以允许空格?感谢
更新
将问题更改为除数字之外的任何内容,因为我需要在文本字段中允许使用特殊字符。
答案 0 :(得分:5)
只需为您匹配的字符添加空格(目前为a-z
和A-Z
)。因此
/\A[a-zA-Z ]+\Z/
请注意,\s
将匹配任何空白字符(包括标签和换行符)。
<强>更新强>
要允许除数字之外的所有内容,您可以使用“否定字符类”,这是通过在方括号的开头放置插入符号^
来实现的:
/\A[^0-9]+\Z/
或者,因为\d
(对于“数字”)相当于[0-9]
,
/\A[^\d]+\Z/
答案 1 :(得分:3)
Ruby regex支持\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