【发布时间】:2011-02-18 02:04:30
【问题描述】:
我想用正则表达式验证许多邮件(一个或多个),但这个属性不属于任何模型。于是我写了一个方法:
def emails_are_valid?(emails)
#regex with validation
regex = Regexp.new("^(\s*[a-zA-Z0-9\._%-]+@[a-zA-Z0-9\.-]+\.[a-zA-Z]{2,4}\s*([,]{1}[\s]*[a-zA-Z0-9\._%-]+@[a-zA-Z0-9\.-]+\.[a-zA-Z]{2,4}\s*)*)$")
#if the quantity of emails is zero o its validations is bad return false.
if emails.blank? || emails.match(regex).nil?
return false
else
return true
end
end
我评估这个字符串 mm@somedomain.com aa, mma@somedomain.com 当 我在http://www.rubular.com/ 中测试了这个正则表达式不好(没有匹配)。 所以根据这个页面我的正则表达式是好的。
但是当我评估 emails.match(regex).nil 时呢?返回错误(所以字符串是有效的,但这个字符串是坏的)
我需要帮助。我的正则表达式不好还是我的 emails_are_valid?方法错误或匹配方法错误。
提前致谢。
【问题讨论】:
-
阅读Regexp recognition of email address hard? 看看您是否真的想尝试使用正则表达式验证电子邮件地址,或者只是了解电子邮件是否真的会发送到地址。不同之处在于拥有一个看起来不错的地址,或者拥有一个您知道是好的地址。 Search StackOverflow 类似问题。
-
@the Tin Man 我想验证格式,我想验证邮件的格式以及逗号分隔的列表,无论它们与逗号之间的空间量如何。但是,当我放置一个空格 + 歌词 + 昏迷 + other_mail 时,匹配方法返回就好像它是正确的一样
标签: ruby-on-rails ruby regex