Ruby on Rails:除了validates_format_of中的数字之外的任何东西

时间:2012-10-05 09:00:29

标签: ruby-on-rails ruby regex

我正在尝试验证文本输入。我注意到,如果文本字段中有任何空格,它就会失败。

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

我需要更改以允许空格?感谢

更新

将问题更改为除数字之外的任何内容,因为我需要在文本字段中允许使用特殊字符。

2 个答案:

答案 0 :(得分:5)

只需为您匹配的字符添加空格(目前为a-zA-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