Ruby regexp无法捕获目标表达式

时间:2017-12-12 16:25:36

标签: ruby-on-rails ruby regex ruby-on-rails-4

我正在使用验证来拒绝包含<p>&lt;p&gt;的任何字符串(相当于p html标记的html字符)。

我尝试使用包含它的字符串,但<p>标记的字符串被拒绝,但&lt;p&gt;

的字符串被拒绝
validates_format_of :message_content,
                      :with => /\A((?!<p>).)*\z/i,
                      :message => "pb1"             


validates_format_of :message_content,
                      :with => /\A((?!&lt;p&gt;).)*\z/i,
                      :message => "pb2"  

我是否应该逃避!&lt;p&gt;的某些特殊字符,这可能会为正则表达式带来问题?怎么样?

1 个答案:

答案 0 :(得分:2)

您可以尝试验证正则表达式不匹配。您将拥有更容易实现的更简单的正则表达式:

validates :message_content, format: { without: /<p>/i, message: 'pb1' }
validates :message_content, format: { without: /&lt;p&gt;/i, message: 'pb2' }