Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails在新行的情况下使用正则表达式验证的格式失败_Ruby On Rails_Ruby_Regex_Validation_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails Rails在新行的情况下使用正则表达式验证的格式失败

Ruby on rails Rails在新行的情况下使用正则表达式验证的格式失败,ruby-on-rails,ruby,regex,validation,ruby-on-rails-5,Ruby On Rails,Ruby,Regex,Validation,Ruby On Rails 5,我正在尝试验证允许空白和新行的字母数字输入 validates_format_of :field, with: /^[a-zA-Z0-9 ]*$/, multiline: true, allow_blank: true 在我的表格中,我输入以下信息: 并通过了验证 所需的行为是只接受字母数字文本(允许空白)并接受文本中任意位置的空格/新行。因此,仅当包含您可能使用的任何字母数字字符时,才拒绝输入 /\A[a-zA-Z0-9 ]*(?:\R[a-zA-Z0-9 ]*)*\z/ 请看演示 详

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

 validates_format_of :field, with: /^[a-zA-Z0-9 ]*$/, multiline: true, allow_blank: true
在我的表格中,我输入以下信息:

并通过了验证

所需的行为是只接受字母数字文本(允许空白)并接受文本中任意位置的空格/新行。因此,仅当包含您可能使用的任何字母数字字符时,才拒绝输入

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

详细信息

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

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

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

使用
/\A[A-zA-Z0-9\n]*\z/
/\A[A-zA-Z0-9]*(?:\R[A-zA-Z0-9]*)*\z/
谢谢,但这会拒绝多行输入哪一行?你试过第二个正则表达式了吗?第一个,第二个是完美的,并且符合要求。非常感谢您使用:/\A[A-zA-Z0-9\u0621-\u064A]*(?:\R[A-zA-Z0-9\u0621-\u064A]*)*\z/验证:策略的格式,多行:true,允许空白:true不接受阿拉伯字符,即使在rails控制台中它匹配正确。你知道rails格式是否用不同的代码编码阿拉伯字符串吗?@SelimAlawwa如果你使用
\p{L}
/\a[\p{L}0-9]*(?:\R[\p{L}0-9]*)*\z/
,你可以允许任何字母。也可以使用
/\A[\p{L}\p{M}0-9]*(?:\R[\p{L}\p{M}0-9]*)*\z/
。此外,您还可以删除
多行:true