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 に答える