Ruby on rails 带有匹配方法的正则表达式问题
我想用正则表达式验证许多邮件(一封或多封),但该属性不属于任何模型。所以我写了一个方法:Ruby on rails 带有匹配方法的正则表达式问题,ruby-on-rails,ruby,regex,Ruby On Rails,Ruby,Regex,我想用正则表达式验证许多邮件(一封或多封),但该属性不属于任何模型。所以我写了一个方法: 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*)
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.comaa,,mma@somedomain.com什么时候
我在中测试了这个正则表达式,结果很糟糕(没有匹配项)。
因此,根据这一页,我的正则表达式是好的
但是当我评估email.match(regex).nil时?返回false(因此字符串有效,但此字符串不正确)
求你了,我需要帮助。我的正则表达式不好还是我的电子邮件有效?方法不正确或匹配方法不正确
提前谢谢 在声明正则表达式时,应该使用单引号而不是双引号,否则
\s
将被解析为转义序列
把那行改成
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*)*)$')
这种方法会奏效
另一方面,这将是一种更简洁的方法来做同样的事情-阅读并查看您是否真的想尝试使用正则表达式验证电子邮件地址,或者只是看看电子邮件是否真的会发送到某个地址,这对您来说是一件好事。区别在于有一个看起来不错的地址,或者有一个你知道的地址是不错的。对于类似的问题。@铁皮人我要验证格式,我要验证邮件的格式,以及逗号分隔的列表,而不管它们和逗号之间的空间大小。然而,当我放置空格+歌词+昏迷+其他_邮件时,匹配方法返回的结果就像它是正确的一样。谢谢。我不能相信问题是双引号,但这就是问题所在。