括号弄乱了rails中的验证

时间:2010-12-17 08:28:28

标签: ruby-on-rails regex validation

我有以下验证:

  validates_format_of :title, 
                  :with => /^[A-Z0-9 áàâäãçéèêëíìîïñóòôøöõúùûüý'-.]*$/i,  
                  :message => "must contain only letters, numbers, dashes, periods, and single quotes"   

这大部分时间都有效,但当标题包含一个打开和关闭的括号时,它会通过。有人知道怎么解决这个问题,或者我的验证正则表达式有问题吗?

1 个答案:

答案 0 :(得分:3)

在正则表达式结束时,您有'-.

这意味着您希望允许撇号和句点之间的所有字符(就像您在正则表达式的开头使用A-Z和0-9一样)。

表达式/['-.]/允许所有这些字符:'()*+,-.

在[]中,你需要转义 - 字符。我认为这将以您希望的方式运作:

/^[A-Z0-9 áàâäãçéèêëíìîïñóòôøöõúùûüý'\-.]*$/i

PS。你不必逃避。在方括号内[]