【问题标题】:Validate so that no special characters are allowed验证以便不允许使用特殊字符
【发布时间】:2014-07-25 08:04:01
【问题描述】:

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

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

正则表达式应该是什么?

【问题讨论】:

  • 哦,我知道我错过了:D

标签: ruby-on-rails ruby regex validation


【解决方案1】:

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

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

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

【讨论】:

  • 这不会验证空标题吗?
  • 是的。您可以将星号替换为 + 以强制执行至少一个字符。
  • 你的正则表达式可以简化为/\w/:rubular.com/r/7kA4JHjwD4 ---我也允许空格(你的正则表达式没有捕捉到它):/(\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。因此,除非您只想测试字符串的第一行,否则不要使用^...$。
猜你喜欢
  • 2021-09-28
  • 1970-01-01
  • 2020-05-06
  • 1970-01-01
  • 2021-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多