Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 带有匹配方法的正则表达式问题_Ruby On Rails_Ruby_Regex - Fatal编程技术网

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*)*)$')
这种方法会奏效


另一方面,这将是一种更简洁的方法来做同样的事情-

阅读并查看您是否真的想尝试使用正则表达式验证电子邮件地址,或者只是看看电子邮件是否真的会发送到某个地址,这对您来说是一件好事。区别在于有一个看起来不错的地址,或者有一个你知道的地址是不错的。对于类似的问题。@铁皮人我要验证格式,我要验证邮件的格式,以及逗号分隔的列表,而不管它们和逗号之间的空间大小。然而,当我放置空格+歌词+昏迷+其他_邮件时,匹配方法返回的结果就像它是正确的一样。谢谢。我不能相信问题是双引号,但这就是问题所在。