【问题标题】:Making a custom validator with regex..not triggering yet使用正则表达式制作自定义验证器..尚未触发
【发布时间】:2010-07-20 15:57:07
【问题描述】:

嘿,伙计们,我认为这会相当简单,但似乎并非如此..也许我只是写错了语法..

在我的模型中,我正在检查某些关键词

before_validation :deal_validation

def deal_validation
  if self.description.match /(exp\s|expire|ex\s|print|mention|\/)/ 
    errors.add(:description, "Now just a second! You can't use those words!")
  end    
end

但它似乎并没有停止保存模型。

我错过了什么吗?

【问题讨论】:

    标签: ruby-on-rails regex validation forms model


    【解决方案1】:

    改成

    验证:deal_validation

    有效!

    【讨论】:

    • 是的 - 你只是告诉它在验证之前运行函数。它实际上并不影响验证。
    【解决方案2】:

    我对ruby不是很了解,但是用rubular测试了一下,好像你想要的:

    (\bexpire\b|\bexp?\b|\bprint\b|\bmention\b|\b\/\b)
    

    \b 字符匹配单词边界。如所写,您的正则表达式将匹配任何带有“/”的内容,以及像“regex”这样的字符串。这真的是你想要的吗?

    使用“?”进行了编辑以稍微改进它量词,同时匹配“exp”和“ex”

    【讨论】:

    • 小心:将\b 放在非单词字符(斜杠)周围意味着它只会在斜杠被单词字符直接包围时匹配,即。 e.斜线将在a/b 中匹配,但在a / b/ 中不匹配。
    • 谢谢,但我的正则表达式的工作原理都是一样的。有些东西无法处理被调用的错误或从未执行过的验证。
    猜你喜欢
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 2015-12-13
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    相关资源
    最近更新 更多