Ruby on rails 否定的正则表达式验证的格式

Ruby on rails 否定的正则表达式验证的格式,ruby-on-rails,regex,validation,Ruby On Rails,Regex,Validation,在我的rails模型中,我有一些模板系统。我想确保编辑它的用户不会犯意外错误,所以我使用了一些简单的验证器 他们可以使用类似于##user_id##的标记,这些标记将在以后被替换。我想确保他们不会输入像#########这样包含太多#的内容,因此字段中不能出现任何###(或#####) class Template validates_format_of :text, :with => /##user_id##/, :message => "##user_id## mu

在我的rails模型中,我有一些模板系统。我想确保编辑它的用户不会犯意外错误,所以我使用了一些简单的验证器

他们可以使用类似于
##user_id##
的标记,这些标记将在以后被替换。我想确保他们不会输入像
#########
这样包含太多
#
的内容,因此字段中不能出现任何
###
(或
#####

class Template
  validates_format_of :text, :with => /##user_id##/, 
    :message => "##user_id## must be present"
  validates_format_of :text, :not_with => /###/, 
    :message => "Too many #"
end
不幸的是,没有
:没有带
选项的\u。。。是否有机会使用
:使用
-regex解决此问题,还是应该使用单独的
验证
方法

我尝试了一些消极的前瞻,但由于(大部分)有几个
##
,只有一个
###
,它们总是匹配其中一个。

这是怎么回事

validates_format_of :text, :with => /(^|[^#])##user_id##($|[^#])/
编辑:我用我的正则表达式复制了acheong87的示例。

这个呢

validates_format_of :text, :with => /(^|[^#])##user_id##($|[^#])/

编辑:我用我的正则表达式复制了acheong87的示例。

你能这样做吗

    /^(.(?!###+user_id##|##user_id###+))*$/
这里有一个现场演示:

用(更多)英语,它说

一种字符串,其中没有字符后跟
###+user_id##
##user_id###+


你能这样做吗

    /^(.(?!###+user_id##|##user_id###+))*$/
这里有一个现场演示:

用(更多)英语,它说

一种字符串,其中没有字符后跟
###+user_id##
##user_id###+


使用
:不带
选项:

validates_format_of :text, :without => /###/, :message => "Too many #"

使用
:不带
选项:

validates_format_of :text, :without => /###/, :message => "Too many #"

这是我以前尝试过的某种查询,但不幸的是它不适用于
validates\u format\u这是我以前尝试过的某种查询,但不幸的是它不适用于