我正在尝试验证文本输入。我注意到,如果文本字段中有任何空格,它会失败。
validates_format_of :role, :with => /\A[a-zA-Z]+\z/, :message => "field should only have letters"
我需要更改什么以允许空格?谢谢
更新:
将问题更改为除数字以外的任何内容,因为我需要在文本字段中允许特殊字符。
我正在尝试验证文本输入。我注意到,如果文本字段中有任何空格,它会失败。
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
(for "digit") 等价于[0-9]
,
/\A[^\d]+\Z/
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