我想用正则表达式检查给定的收件人是否有正确的域,但无论我做什么我总是得到 false
代码:
from = "Pratha Burna <[email protected]>" # or just "<[email protected]>"
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
输入名称部分并欺骗服务器。我需要的是检查里面<>
例如,这应该失败:
[email protected] <[email protected]>
因为@mydomain.com
不在<>
如何正确清理和检查域?
使用String#[]
与以下正则表达式:
'[email protected] <[email protected]>'[/(?<=\@)[^@]*?(?=>\z)/]
#⇒ "gmail.com"
正则表达式为:
/(?<=\@)[^@]*?(?=>\z)/
@
和结束最后之间的任何内容,>
不包含@
.
您可以简单地将其与有效域列表或其他内容进行比较。它获取域并将其作为字符串返回。
另一种方法是获取一个电子邮件地址并检查它是否以您需要的结尾:
from[/(?<=<)[^<>]*?(?=>\z)/]
#⇒ "[email protected]"
from[/(?<=<)[^<>]*?(?=>\z)/].end_with?('@gmail.com')
#⇒ true
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句