Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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 验证,以便不允许使用特殊字符_Ruby On Rails_Ruby_Regex_Validation - Fatal编程技术网

Ruby on rails 验证,以便不允许使用特殊字符

Ruby on rails 验证,以便不允许使用特殊字符,ruby-on-rails,ruby,regex,validation,Ruby On Rails,Ruby,Regex,Validation,如何在模型中验证:title,以便只接受字母a-z、a-z和0-9 validates :title, :format => { with: REGULAR EXPRESSION , :message => 'no special characters, only letters and numbers' } 正则表达式应该是什么?正则表达式应该是/^[a-zA-Z0-9]*$/ 您基本上定义了三个允许的符号范围,首先是a-z,然后是a-z,最后是0-9 最后的星号定义了零个或

如何在模型中验证
:title
,以便只接受字母a-z、a-z和0-9

  validates :title, :format => { with: REGULAR EXPRESSION , :message => 'no special characters, only letters and numbers' }

正则表达式应该是什么?

正则表达式应该是
/^[a-zA-Z0-9]*$/

您基本上定义了三个允许的符号范围,首先是a-z,然后是a-z,最后是0-9


最后的星号定义了零个或多个前面提到的字符需要匹配,这意味着允许使用空标题。如果至少需要一个字符,请使用
+
而不是
*
。或者,如果您需要三个以上的字符,请使用
{3,}
而不是星号。

哦,我看我漏掉了:这不是验证空标题吗?是的。您可以将星号替换为+以强制执行至少一个字符。您的正则表达式可以简化为
/\w/
:---我也允许使用空格(您的正则表达式没有捕捉到它):
/(\w |\s)/
/\w/
允许使用下划线。您应该使用
/\a[a-zA-Z0-9]*\z/
。如果只使用
^…$
它将只验证字符串的第一行,例如
asdffs\n$&“=~/^[a-zA-Z0-9]*$/
将返回
0
,条件将通过。使用
\A...z
它看起来像
“asdffs\n&”=~/\A[A-zA-Z0-9]*\z/
并返回
nil
。因此,除非您只想测试字符串的第一行,否则不要使用
^…$