Ruby on rails 正则表达式在RubyonRails中不能完全工作

Ruby on rails 正则表达式在RubyonRails中不能完全工作,ruby-on-rails,ruby,regex,comments,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]) 当放入ruby时,如下所示 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-]*[a-z0-9])
当放入ruby时,如下所示

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中被理解为注释。那么,有没有一种方法可以在不将“#”解释为注释的情况下使用正则表达式?正则表达式可以存储为字符串或类似的东西吗?

您必须使用ruby正则表达式语法
/regex/
,或者使用
regexp.new(string)


您必须使用ruby正则表达式语法
/regex/
,或者使用
regexp.new(string)


您必须使用ruby正则表达式语法
/regex/
,或者使用
regexp.new(string)


您必须使用ruby正则表达式语法
/regex/
,或者使用
regexp.new(string)



您的模式必须用分隔符括起来:
=~/[a-z0-9!…[a-z0-9])/
(不要忘记在模式内转义斜杠),如果您想确保整个字符串与您的模式匹配(而不仅仅是一部分),必须为字符串的开头
\A
和结尾
\z
添加锚点。如果要确保整个字符串与您的模式(而不仅仅是部分)匹配,您的模式必须包含在分隔符之间:
=~/[A-z0-9!…[A-z0-9])/
(不要忘记在模式中转义斜线),必须为字符串的开头
\A
和结尾
\z
添加锚点。如果要确保整个字符串与您的模式(而不仅仅是部分)匹配,您的模式必须包含在分隔符之间:
=~/[A-z0-9!…[A-z0-9])/
(不要忘记在模式中转义斜线),必须为字符串的开头
\A
和结尾
\z
添加锚点。如果要确保整个字符串与您的模式(而不仅仅是部分)匹配,您的模式必须包含在分隔符之间:
=~/[A-z0-9!…[A-z0-9])/
(不要忘记在模式中转义斜线),必须为字符串的开头
\A
和结尾
\z
添加锚点。请转义该聚集表达式中隐藏的两个正斜杠(或像您所说的那样使用
Regexp.new()
).@Sam-谢谢,我完全错过了它们。:)工作得很好。我不知道必须使用分隔符。非常感谢您的快速响应!请避开隐藏在该聚集表达式中的两个正斜杠(或者像您所说的那样使用
Regexp.new()
).@Sam-谢谢,我完全错过了它们。:)工作得很好。我不知道必须使用分隔符。非常感谢您的快速响应!请避开隐藏在该聚集表达式中的两个正斜杠(或者像您所说的那样使用
Regexp.new()
).@Sam-谢谢,我完全错过了它们。:)工作得很好。我不知道必须使用分隔符。非常感谢您的快速响应!请避开隐藏在该聚集表达式中的两个正斜杠(或者像您所说的那样使用
Regexp.new()
).@Sam-谢谢,我完全错过了。:)效果很好。我不知道必须使用分隔符。非常感谢您的快速响应!
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