【发布时间】:2014-07-16 22:24:51
【问题描述】:
因此,我正在尝试将正则表达式应用于进入我正在开发的网站的电子邮件地址,以尝试验证它们大部分是有效的。正则表达式如下。
[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 中被理解为 cmets。那么,有没有一种方法可以使用正则表达式而不会将“#”解释为 cmets?正则表达式可以存储为字符串或类似的东西吗?
【问题讨论】:
-
您的模式必须包含在分隔符之间:
=~ /[a-z0-9!.....[a-z0-9])/(不要忘记在模式内转义斜杠) -
如果您想确保整个字符串与您的模式匹配(而不仅仅是一部分),您必须为开头的
\A和结尾的字符串\z添加锚点。
标签: ruby-on-rails ruby regex comments