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(for "digit") 等价于[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 回答