我想在控制器(RoR)上制作一个正则表达式。我试过这段代码:
@widget_check = ClanTemplatesWidget.find(params[:id])
unless params[:config].blank?
#@widget_check.config in database value = [{"input":"string","name":"code", "label":"Code clan","validation":"^([#][A-Z0-9]{7})$"}]
JSON.parse(@widget_check.config).each do |config,i|
regexp = Regexp.new(config["validation"])
if regexp.match(params[:config][config["name"]])
@error = 0
else
@error = 1
end
end
@widget.config = params[:config].to_json
end
有关信息,我的数据在数据库中。如果我检查这两个参数我有:
config [“validation”] = / ^([#] [A-Z0-9] {8})$ /
params [:config] [config [“name”]] = #2YL9GR9R
如果我用数据重写我的代码,它可以正常工作(就像那样):
if /^([#][A-Z0-9]{8})$/.match("#2YL9GR9R")
@error = 0
else
@error = 1
end
答案 0 :(得分:2)
您的config["validation"]
包含一个看起来像正则表达式的字符串,但事实并非如此。但是你可以用字符串构建一个正则表达式:
regexp = Regexp.new(config["validation"])
regexp.match(params[:config][config["name"]])
由于Regexp.new
需要一个没有周围/.../
的字符串,因此您可能只想省略它们。