计算rails验证中的单词

时间:2012-01-03 00:13:58

标签: ruby-on-rails regex

我正在使用以下验证来计算rails中的单词(我从Rails文档中得到了示例),但它并不真实:

validates :body, :length => {
    :minimum   => 50,
    :maximum   => 300,
    :tokenizer => lambda { |str| str.scan(/\w+/) },
    :too_short => "must have at least %{count} words",
    :too_long  => "must have at most %{count} words"
  }

用户试图发布291个单词(这是Word给出的单词)并且被拒绝的时间太长了。我不确切地知道正在使用的表达式有什么问题,或者可能是一个很好的表达式来确保准确的字数。

2 个答案:

答案 0 :(得分:5)

除了扫描/ \ w + /之外,您应该扫描/ \ s + | $ /并将最大值减1,因为\ w字符匹配对于不常见的字符可能是意外的,因为只有A-Za-z0-9_-是有效的。

答案 1 :(得分:2)

您可以尝试:

:tokenizer => lambda { |str| str.split }