正则表达式在Ruby on Rails中无法完全运行

时间:2014-05-27 21:12:20

标签: ruby-on-rails ruby regex comments

所以,我正在尝试将正则表达式应用于进入我正在努力尝试验证它们大多数有效的网站的电子邮件地址。正则表达式如下所示。

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@
(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])

如下所示放入红宝石。

if email =~ [a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@ (?:[a-z0-9]
(?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])
#logic here if regex passes
end

问题是下面的正则表达式包含'#'在ruby中被理解为注释的字符。那么,有没有一种方法可以使用正则表达式而不需要#'#'被解释为评论?正则表达式可以存储为字符串或类似的东西吗?

1 个答案:

答案 0 :(得分:3)

您必须使用ruby正则表达式语法/regex/,或使用Regexp.new(string)构建新的正则表达式

regexp = /[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])/

if email =~ regexp
  #logic here if regex passes
end