有没有人有可以用来测试我的JS地址验证脚本的电子邮件地址列表?我正在寻找一个尽可能完整的列表来测试最常见的边缘情况,如果不是所有情况的话。
发布于 2008-11-18 00:46:16
根据RFC2822有效的示例
根据RFC2822s,无效的示例
发布于 2008-11-18 02:42:34
域部分(在最后一个@之后)是一系列由点分割的字符串标签。
每个标签是1到63个八位字节的字符串,由A-Z、a-z 0-9或连字符(-)组成
域的最大大小为255个八位字节。
为了与arpanet兼容,每个标签必须以字母开头,以字母或数字结尾,但一些TLD:s现在允许全数字域,如0.nu
请注意,TLD允许为63个二进制八位数。许多脚本错误地将其限制为2-3个八位字节,从而使domain.name无效。
例如?
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
(不,它没有注册)
更新:使用IDNA几乎可以一切:
测试.مثال.آزمایشی
另请参阅:
https://stackoverflow.com/questions/3232/how-far-should-one-take-e-mail-address-validation
http://www.leshazlewood.com/?p=5
更新: Bobince建议测试域名中的圆点。
总结:仅测试域名部分中的@和点,然后发送确认邮件。
下面是对@和点进行测试示例:
下面是一个简单的例子:
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;
}
https://stackoverflow.com/questions/297420
复制相似问题