電子メール アドレスが 2 つのドメインのいずれかではないかどうかを検出しようとしていますが、Ruby の構文に問題があります。私は現在これを持っています:
if ( !email_address.end_with?("@domain1.com") or !email_address.end_with?("@domain2.com"))
#Do Something
end
これは条件の正しい構文ですか?
電子メール アドレスが 2 つのドメインのいずれかではないかどうかを検出しようとしていますが、Ruby の構文に問題があります。私は現在これを持っています:
if ( !email_address.end_with?("@domain1.com") or !email_address.end_with?("@domain2.com"))
#Do Something
end
これは条件の正しい構文ですか?
ここではなく、どちらにも一致しない文字列を見つけようとしているためor
、論理(and) が必要です。&&
if ( !email_address.end_with?("@domain1.com") && !email_address.end_with?("@domain2.com"))
#Do Something
end
を使用するor
と、いずれかの条件が true の場合でも、条件全体が false のままになります。
優先順位が高いため、&&
代わりにを使用していることに注意してください。and
詳細はここでよく概説されています
unless
論理 orを使用して、同等の条件を作成できます。||
unless email_address.end_with?("@domain1.com") || email_address.end_with?("@domain2.com")
の両側を||
で否定する必要がないので、これは少し読みやすいかもしれません!
。
さらに多くのドメインが追加されると、反復作業email_address.end_with?
はすぐに退屈になります。別:
if ["@domain1.com", "@domain2.com"].none?{|domain| email_address.end_with?(domain)}
#do something
end
end_with?
複数の引数を取るのを忘れました:
unless email_address.end_with?("@domain1.com", "@domain2.com")
#do something
end
どうですか:
(!email_address[/@domain[12]\.com\z/])