この質問が以前に尋ねられたとは思いません...確かに、この要件で何かを見つけることはできません。
バックグラウンド
人の ID を返す API があります。一般に、ID は大文字と小文字を区別するものとして扱われるべきですが、ID が実際にメール アドレスである場合、メール アドレスの大文字と小文字が混在したバージョンを返すこの API の実装が優れていない場合、楽しいことがたくさんあります...
つまり、1つの実装と話している...それはURLのようなものをIDとして返します。
http://foo.bar.com/blahblahblah
次に、別の実装と話している可能性があります...それは、明らかでないIDを返します。
as€jlhdésdj678hjghas7t7qhjdhg£
素敵な小文字の電子メールアドレスを返す素敵な実装と話している可能性があります。
bob.mcspam@acme.org
または、まったく同等の ID を返すあまり優れていない実装と話している可能性があります。
bob.mcspam@ACME.org
RFC 2821 は、メールボックスのみが大文字と小文字を区別すると述べていますが、大文字と小文字の区別を悪用すると、多くの相互運用の問題が発生します...
私がやりたいことは、電子メールである文字列を特定し、ドメインを小文字にすることです。文字列のような URI を識別するのは簡単です。スキームは or のいずれhttp
かhttps
であり、ドメイン名を小文字にするだけでよく、解析がはるかに簡単です。
質問
外部サービスから提供された文字列が与えられた場合、その文字列が電子メール アドレスであるかどうかを判断して、ドメイン名を強制的に小文字にすることができるテストはありますか?
わずかな割合の電子メール アドレスが見落とされ、ドメイン名が小文字に変換されないことは許容されます。(偽陰性は許容)
メールアドレスのドメイン部分でない場合、文字列の一部を強制的に小文字にすることはできません。(偽陽性は許されません)
アップデート
この質問は、これとこれとは微妙に異なることに注意してください。これらの 2 つの質問のコンテキストでは、文字列が電子メール アドレスであることを既に知っているからです。
この質問の文脈では、文字列がメールアドレスなのか他の何かなのかわかりません...それがこの質問の違いです