我使用下面的驗證,以算在軌字計數的話(我從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給出的數字),它被拒絕的時間太長。我不知道正在使用的表達式有什麼問題,或者確定一個準確的字數可能是一個很好的表達方式。
難道他們剪切和粘貼,或交的純文本?你有數字嗎?這應該非常接近。你可以試試'/ \ S + /',希望如果有特殊字符,它們就會被包含在這個單詞中 - 可能'/ \ w + /'在Word的特殊字符(智能引號等)上窒息。我想編碼可能很重要;不確定。 – 2012-01-03 00:38:47
是的,這可能是一個剪切和粘貼的工作,但我嘗試了純文本,它仍然計算了14個額外的單詞 - 他有很多引號。我用'/ \ b \ S + \ b /'去了,現在看來它工作得相當準確。 – Slick23 2012-01-03 00:44:15
跟進有什麼問題會很有趣;你可以創建一個簡短的已知錯誤的字符串,並查看'scan'實際創建的內容 - 我不確定爲什麼會這樣做。 – 2012-01-03 00:51:54