我想用正则表达式检查给定的收件人是否具有正确的域,但是无论如何我总是得到false
代码:
from = "Pratha Burna <prathab@mydomain.com>" # or just "<prathab@mydomain.com>"
from.gsub!(/^\s*<\s*(.*)\s*>\s*$/, '\1')
from.downcase!
puts "checking for #{from}" # this should give only email. But whole from is here.
if from !~ /@mydomain.com$/
puts "false"
else
puts "true"
end
if from !~ /@another.com$/
puts "false"
else
puts "true"
end
示例应用:https://ideone.com/arAkKm
我需要检查@mydomain.com
是否在from
变量中作为电子邮件。因为,用户可以将@mydomain.com
命名为section并欺骗服务器。我需要检查的是<>
例如,这应该失败:
Pratha@mydomain.com <another@gmail.com>
因为@mydomain.com
不在<>
如何正确清理并检查域?
答案 0 :(得分:1)
将String#[]
与以下正则表达式配合使用:
target=_blank
正则表达式为:
target=_top
'Pratha@mydomain.com <another@gmail.com>'[/(?<=\@)[^@]*?(?=>\z)/]
#⇒ "gmail.com"
到最后一个/(?<=\@)[^@]*?(?=>\z)/
之间的任何内容,其中不包含@
。
您可以简单地将其与有效域列表或其他内容进行比较。它获取域并以字符串形式返回。
另一种方法是获取电子邮件地址,并检查其是否以您所需的结尾:
>