我有以下类型的支票
validates :callback_handle, :format => { :with => /[_0-9a-zA-Z]+/ix }, :unless => "callback.nil?"
我不希望任何非 0-9、az AZ 字符通过。所以我将 callback_handle 设置为“!alksjda”(注意!在开头)。这个测试没有失败。我究竟做错了什么?
我在 irb 上尝试了一些东西:这就是我得到的:
1.9.2-p320 :001 > a = "!askldjlad"
=> "!askldjlad"
1.9.2-p320 :002 > a =~ /[_0-9a-zA-Z]+/ix
=> 1
1.9.2-p320 :003 > a = "askldjlad"
=> "askldjlad"
1.9.2-p320 :004 > a =~ /[_0-9a-zA-Z]+/ix
=> 0
我认为如果找不到匹配项,它会返回 false 或 nil。
有人可以告诉我我的理解有什么问题吗?
编辑:我发现 =~ 将返回匹配的位置。所以问题变成了我如何不允许具有任何其他字符的东西不匹配?