可用于测试 JavaScript 验证脚本的电子邮件地址列表

发布于 2024-07-08 21:03:33 字数 75 浏览 4 评论 0原文

有人有我可以用来测试 JS 地址验证脚本的电子邮件地址列表吗? 我正在寻找尽可能完整的列表来测试最常见的边缘情况(如果不是所有情况)。

Does anyone have a list of email addresses that I can use to test my JS address validation script? I'm looking for as complete of a list as is reasonable to test the most common edge cases, if not all cases.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

ま昔日黯然 2024-07-15 21:03:33

根据 RFC2822 有效的示例

根据 RFC2822s

  • me@
  • @example.com
  • 无效的示例[email protected]
  • < a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e1cf8c84a18499808c918d84cf828e8c">[电子邮件受保护]
  • [电子邮件受保护]
  • me.example@com
  • me\@example.com

来自:
http://en.wikibooks.org/wiki/JavaScript/Best_Practices

Examples valid according to RFC2822

Examples invalid according to RFC2822s

From :
http://en.wikibooks.org/wiki/JavaScript/Best_Practices

意中人 2024-07-15 21:03:33

我现在已经整理了来自 Cal Henderson、Dave Child、Phil Haack、Doug Lovell 和 RFC 3696 的测试用例。 总共 164 个测试地址

我对我能找到的所有验证器进行了所有这些测试。 比较在这里:http://www.dominicsayers.com/isemail

随着人们增强验证器,我将尽力使此页面保持最新状态。 感谢 Cal、Dave 和 Phil 在编译这些测试方面的帮助和合作以及对我自己的验证器。

人们应该特别注意针对 RFC 3696 的勘误表。 三个规范示例实际上是无效地址。 地址的最大长度为 254 或 256 个字符,不是 320 个字符。

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.

月亮邮递员 2024-07-15 21:03:33

域部分(最后一个 @ 之后)是一系列用点分隔的字符串标签。

每个标签是由 AZ、az 0-9 或连字符 (-) 组成的 1 到 63 个八位位组的字符串。

域的最大大小为 255 个八位位组。

为了与 arpanet 兼容,每个标签必须以字母开头并以字母或数字结尾,但某些 TLD:s 现在允许全数字域,例如 0.nu

请注意,TLD 允许为 63 个八位位组。 很多脚本错误地将其限制为 2-3 个八位字节,从而导致domain.name 无效。

例子?

abcdefghijklmnopqrstuvwxyz.ABCDEFGHIJKLMNOPQRSTUVWXYZ.!#$%&'+-/=.?^`{|}~@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-0123456789.abcdefghijklmnopqrstu.vwxyzABCDEFGHI JKLMNOP.QRSTUVWXYZ0.1.2.3.4.5.6.7.8.9.az.AZ.0- 9.a0.b1.c2.d3.e4.f5.g6.h7.i8.j9.K0.L1.M2.N3.O.domain.name

(不,它没有注册)

更新:
有了 IDNA,几乎一切皆有可能:

参见:

https://stackoverflow.com/questions/3232/how-far-should-one-take-e-mail-address-validation

http://www.leshazlewood.com/?p=5

更新: Bobince 建议测试域名。

摘要:仅测试域名部分中的 @ 和点,然后发送确认电子邮件。

下面是一个测试 @ 和点的示例:

  • 必须至少有一个 @
  • 本地部分中必须至少有一个字符 ( pos > 0)
  • 域部分中必须至少有一个点
  • 域部分必须至少 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;
}

The domain part (after the last @), is a series of string labels divided by a dot.

Each label is a string of 1 to 63 octets consisting of A-Z, a-z 0-9 or hyphen (-)

The maximum size of the domain is 255 octets.

To be compatible with arpanet, each label must start with a letter and end with a letter or digit but some TLD:s now allows an all numeric domain, like 0.nu

Note that the TLD is allowed to be 63 octets. Very many scrips wrongly restricts it to 2-3 octets making domain.name invalid.

Example?

abcdefghijklmnopqrstuvwxyz.ABCDEFGHIJKLMNOPQRSTUVWXYZ.!#$%&'+-/=.?^`{|}~@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-0123456789.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.0.1.2.3.4.5.6.7.8.9.a-z.A-Z.0-9.a0.b1.c2.d3.e4.f5.g6.h7.i8.j9.K0.L1.M2.N3.O.domain.name

(and no, it isn't registered)

Update:
With IDNA almost everything is possible:

See also:

https://stackoverflow.com/questions/3232/how-far-should-one-take-e-mail-address-validation

http://www.leshazlewood.com/?p=5

Update: Bobince suggested to test for a dot in the domain name.

Summary: Only test for @ and a dot in the domain part and then send a confirmation email.

Here is an example that test for @ and dot:

  • There must be at least one @
  • There must be at least one char in the local part ( pos > 0)
  • There must be at least one dot in the domain part
  • The domain part must be at lest 4 characters

Here is a simple one:

function isEmail(address) {
    var pos = address.lastIndexOf("@");
    return pos > 0 && (address.lastIndexOf(".") > pos) && (address.length - pos > 4);
}

Or a function that returns the local and domain part in an object ( if you want to process it even further, for example convert it to 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;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文