Rails - 检查字段格式是否有效正则表达式/捕获 RegexpErrors
Rails - check if field format is valid regex / catch RegexpErrors
在我的应用程序中,我将正则表达式存储在字段中 (value_regex
) - 如何检查该字段是否包含有效的正则表达式?
是否有 ruby 函数或正则表达式?
编辑
根据下面的输入,在我的模型中 tag.rb
我添加了:
validate :valid_regex
和下面的 方法 (我也想扩展另一个正则表达式字段 key_regex
。首先如何处理 exceptions/errors。我做不到到目前为止找到文档:
def valid_regex
unless Regexp.new(value_regex)
errors.add(:value_regex, "not a valid regular expression")
end
end
或更简单
def valid_regex
@valid_regex ||= Regexp.new(self.value_regex)
end
如何捕获 RegexpError(s) 并将消息作为错误输出(errors.ad?)?
如果您将正则表达式存储为字符串,您可以将其转换回 正则 正则表达式:
string = 'test.*'
Regexp.new(string)
# => /test.*/
您可能想在模型中编写包装器方法:
class Example < ActiveRecord::Base
def matching_regex
@matching_regex ||= Regexp.new(self.matching)
end
end
其中 matching
是具有字符串值的原始列。
@valid_value_regex ||= Regexp.new(self.value_regex)
rescue => exception
errors.add(:value_regex, exception)
您必须挽救异常并将消息放入 errors
。试试这个:
def valid_regex
Regexp.new(value_regex.to_s)
rescue RegexpError => e
errors.add(:value_regex, e.message)
end
在我的应用程序中,我将正则表达式存储在字段中 (value_regex
) - 如何检查该字段是否包含有效的正则表达式?
是否有 ruby 函数或正则表达式?
编辑
根据下面的输入,在我的模型中 tag.rb
我添加了:
validate :valid_regex
和下面的 方法 (我也想扩展另一个正则表达式字段 key_regex
。首先如何处理 exceptions/errors。我做不到到目前为止找到文档:
def valid_regex
unless Regexp.new(value_regex)
errors.add(:value_regex, "not a valid regular expression")
end
end
或更简单
def valid_regex
@valid_regex ||= Regexp.new(self.value_regex)
end
如何捕获 RegexpError(s) 并将消息作为错误输出(errors.ad?)?
如果您将正则表达式存储为字符串,您可以将其转换回 正则 正则表达式:
string = 'test.*'
Regexp.new(string)
# => /test.*/
您可能想在模型中编写包装器方法:
class Example < ActiveRecord::Base
def matching_regex
@matching_regex ||= Regexp.new(self.matching)
end
end
其中 matching
是具有字符串值的原始列。
@valid_value_regex ||= Regexp.new(self.value_regex)
rescue => exception
errors.add(:value_regex, exception)
您必须挽救异常并将消息放入 errors
。试试这个:
def valid_regex
Regexp.new(value_regex.to_s)
rescue RegexpError => e
errors.add(:value_regex, e.message)
end