使用Regex的Rails validates_format_of在换行时失败

时间:2018-11-18 11:10:30

标签: ruby-on-rails ruby regex validation ruby-on-rails-5

我正在尝试验证允许空格和换行的字母数字输入

 validates_format_of :field, with: /^[a-zA-Z0-9 ]*$/, multiline: true, allow_blank: true

在我的表格中,我输入以下内容:

input

其已接受并通过验证

所需的行为是仅接受字母数字文本(允许为空白),并在文本中的任何位置接受空格/换行符。因此,仅在包含任何字母数字字符

时才拒绝输入

2 个答案:

答案 0 :(得分:2)

您可以使用

/\A[a-zA-Z0-9 ]*(?:\R[a-zA-Z0-9 ]*)*\z/

请参见Rubular演示。

详细信息

  • \A-字符串的开头
  • [a-zA-Z0-9 ]*-0个或更多字母,数字或空格
  • (?:\R[a-zA-Z0-9 ]*)*-重复0次或更多次
    • \R-换行符
    • [a-zA-Z0-9 ]*-0个或更多字母,数字或空格
  • \z-字符串的结尾。

答案 1 :(得分:0)

我添加了一些白名单逗号和句号。

format: { with: /\A[a-zA-Z0-9 ,.;'"+-?!%$]*(?:\R[a-zA-Z0-9 ,.;'"+-?!%$]*)*\z/}