0

我编写了方法来检测 :email 中的主机名是否存在于黑名单主机名的数组中,但无济于事我的方法几乎可以工作,但无法弄清楚:

host = email.split("@").last // e.g. "hotmail.com"
bad_hostnames = %w(rtrtr.com )

if /.*(#{bad_hostnames.join("|")}).*\@/.match(host)
  errors.add(:email, "Invalid temp mail provider")
end

我在这里想念什么?正则表达式很难测试。似乎该点引起了问题,检查电子邮件中某些列入黑名单的单词的类似方法工作正常。

4

1 回答 1

1

我相信您正在寻找此代码:

if /^(#{bad_hostnames.join("|")})$/.match(host)

或者这个:

if /\@(#{bad_hostnames.join("|")})$/.match(email)
于 2012-10-22T16:35:14.610 回答