快捷导航
查看: 540|回复: 9

[分享] 最正确的邮箱正则表达式

[复制链接]
发表于 2016-4-18 16:45:19 | 显示全部楼层 |阅读模式
本帖最后由 Skiy 于 2017-5-27 11:37 编辑

从百度网盘的扒下来的邮箱验证表达式

邮箱验证最完美的解决方案:
[JavaScript] 纯文本查看 复制代码运行代码

var reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
console.log("\r\n表达式为:%s \r\n", reg);

var vallist = [
"a@a-c.com",
"a@a_c.com",
"a@a_.com",
"a@a-.com",
"a@-a.com",
"a@-.com",
"a@_a.com",
"a@__.com",
"a@_.com",
"a@q.qq.com",
"a@a.q.qq.com",
"a@qq.qq.com",
"a@q_q.qq.com",
"a@q-q.qq.com",
"a@q-q.q-q.com",
"a@8.qq.com",
"a@.qq.com",
"a@你好.中国",
"a@你.中",
"a@c.qq.com.layer",
"a@c.qq.com.website","fdasfads@c",
"fdasfads@abc.ccc1",
];

for (k in vallist) {
        console.log(vallist[k], reg.test(vallist[k]));
}





发表于 2016-4-18 17:33:47 | 显示全部楼层
[JavaScript] 纯文本查看 复制代码运行代码
var reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
console.log("\r\n表达式为:%s \r\n", reg);

// 无损优化后正则
var reg2 = /^\w+([.-]\w+)*@[a-zA-Z\d]+(?=.*\.)([.-][a-zA-Z\d]+)+$/;

[
  // true
  'a@a-c.com',
  'a@q.qq.com',
  'a@a.q.qq.com',
  'a@qq.qq.com',
  'a@q-q.qq.com',
  'a@q-q.q-q.com',
  'a@8.qq.com',
  'a@c.qq.com.layer',
  'a@c.qq.com.website',
  'aa-aa.aa@aa-aa.aa',
  // false
  'aa-aa.aa@aa_aa.aa',
  'aa-aa.aa@aa-aa-aa',
  'a@a_c.com',
  'a@a_.com',
  'a@a-.com',
  'a@-a.com',
  'a@-.com',
  'a@_a.com',
  'a@__.com',
  'a@_.com',
  'a@q_q.qq.com',
  'a@.qq.com',
  'a@你好.中国',
  'a@你.中',
].forEach(mail => {
  console.log(mail, '=>' , reg.test(mail), reg2.test(mail));
});
发表于 2016-4-18 16:47:05 | 显示全部楼层
啊,好久不见楼上的兄弟
不错的正则收藏了...
发表于 2016-4-18 17:43:29 | 显示全部楼层
正则短了不少,乱码的正则最近进步很大
发表于 2016-4-18 22:47:55 | 显示全部楼层
上面的代码简直不敢直视,太复杂了....
发表于 2016-4-18 23:34:48 | 显示全部楼层
乱码 发表于 2016-4-18 17:33
[mw_shl_code=javascript,true]var reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A ...

请教大神一个问题,是不是正则越短,执行效率越高

点评

不是,影响性能的主要原因是回溯,其次是不必要的分支和不合理的分支顺序。  发表于 2016-4-19 10:11
 楼主| 发表于 2017-5-27 11:37:48 | 显示全部楼层
又发现了个bug:

fdasfads@abc.ccc1
这样子就能通过了啊。。。
发表于 2017-5-27 11:41:51 | 显示全部楼层
Skiy 发表于 2017-5-27 11:37
又发现了个bug:

哪有人用这样的邮箱啊
发表于 2017-6-19 15:28:02 | 显示全部楼层
还真没有用过这个呢

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们|手机版|小黑屋| ( 鲁ICP备10022556号-3 )

GMT+8, 2017-8-19 05:55 , Processed in 0.152267 second(s), 25 queries .

Powered by Discuz! X3.2 Licensed

Copyright © 2012-2017 Design: 蚂蚁部落

快速回复返回顶部 返回列表