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
。因此,除非您只想测试字符串的第一行,否则不要使用^…$
。