验证以便不允许使用特殊字符

use*_*037 6 ruby regex validation ruby-on-rails

如何:title在我的模型中验证,以便只接受字母az,Az和0-9?

  validates :title, :format => { with: REGULAR EXPRESSION , :message => 'no special characters, only letters and numbers' }
Run Code Online (Sandbox Code Playgroud)

正则表达式应该是什么?

Luk*_*ker 9

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

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

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

  • 你应该使用`/\A [a-zA-Z0-9]*\z /`.如果你只使用`^ ... $`它将仅验证字符串的第一行,例如`"asdffs \n $&"=〜/ ^ [a-zA-Z0-9]*$ /`将返回`0 `和条件将通过.使用`\ A ...\z`它看起来像"asdffs \n&"=〜/\A [a-zA-Z0-9]*\z /`并返回`nil`.因此,除非您只想测试第一行字符串,否则不要使用`^ ... $`. (3认同)
  • `/\w /`允许下划线. (2认同)