JS アドレス検証スクリプトをテストするために使用できる電子メール アドレスのリストを持っている人はいますか? すべてのケースではないにしても、最も一般的なエッジケースをテストするのに合理的なリストの完全なものを探しています.
3 に答える
RFC2822 に従って有効な例
- me@example.com
- a.nonymous@example.com
- 名前+タグ@example.com
- name\@tag@example.com – これは 2 つの @ 記号を含む有効な電子メール アドレスです。
- スペース\ are\ allowed@example.com
- "スペースは引用できます"@example.com
- !#$%&'*+-/=.?^_`{|}~@[1.0.0.127]
- !#$%&'*+-/=.?^_`{|}~@[IPv6:0123:4567:89AB:CDEF:0123:4567:89AB:CDEF]
- me(これはコメントです)@example.com – コメントは推奨されていませんが、RFC2822 によって禁止されていません。
RFC2822 に従って無効な例
- 自分@
- @example.com
- me.@example.com
- .me@example.com
- me@example..com
- me.example@com
- me\@example.com
I've now collated test cases from Cal Henderson, Dave Child, Phil Haack, Doug Lovell and RFC 3696. 164 test addresses in all.
I ran all these tests against all the validators I could find. The comparison is here: http://www.dominicsayers.com/isemail
I'll try to keep this page up-to-date as people enhance their validators. Thanks to Cal, Dave and Phil for their help and co-operation in compiling these tests and constructive criticism of my own validator.
People should be aware of the errata against RFC 3696 in particular. Three of the canonical examples are in fact invalid addresses. And the maximum length of an address is 254 or 256 characters, not 320.
ドメイン部分(最後の@の後)は、ドットで分割された一連の文字列ラベルです。
各ラベルは、AZ、az 0〜9、またはハイフン(-)で構成される1〜63オクテットの文字列です。
ドメインの最大サイズは255オクテットです。
arpanetと互換性を持たせるには、各ラベルを文字で開始し、文字または数字で終了する必要がありますが、一部のTLD:sでは、0.nuなどのすべての数値ドメインが許可されるようになりました。
TLDは63オクテットであることが許可されていることに注意してください。非常に多くのスクリプトが誤って2〜3オクテットに制限しているため、domain.nameが無効になっています。
例?
abcdefghijklmnopqrstuvwxyz.ABCDEFGHIJKLMNOPQRSTUVWXYZ。!#$%&'+-/=.?^`{|}~@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-0123456789.abcdefghijklm .a0.b1.c2.d3.e4.f5.g6.h7.i8.j9.K0.L1.M2.N3.O.domain.name
(いいえ、登録されていません)
更新:IDNAを使用すると、ほとんどすべてが可能です。
- punnycode@XN--0ZWM56D.XN--HGBK6AJ7F53BBA
- idna_in_clear(?)_text@例子.试.مثال.آزمایشی
参照:
https://stackoverflow.com/questions/3232/how-far-should-one-take-e-mail-address-validation
http://www.leshazlewood.com/?p=5
更新: Bobinceは、ドメイン名のドットをテストすることを提案しました。
概要:ドメイン部分の@とドットのみをテストしてから、確認メールを送信します。
@とdotをテストする例を次に示します。
- 少なくとも1つの@が必要です
- ローカル部分には少なくとも1つの文字が必要です(pos> 0)
- ドメイン部分には少なくとも1つのドットが必要です
- ドメイン部分は少なくとも4文字である必要があります
これが簡単なものです:
function isEmail(address) {
var pos = address.lastIndexOf("@");
return pos > 0 && (address.lastIndexOf(".") > pos) && (address.length - pos > 4);
}
または、オブジェクト内のローカル部分とドメイン部分を返す関数(さらに処理したい場合、たとえば、punycodeに変換したい場合)
function isEmail(address) {
var pos = address.lastIndexOf("@");
return pos > 0 && (address.lastIndexOf(".") > pos) && (address.length - pos > 4) ?
{
local:address.substr(0,pos < 0 ? 0 : pos),
domain:address.substr(pos+1)
}: false;
}