现在许多网站都采用了通过邮箱账号来注册用户名的方式,一来可以避免重复,而来安全性也得到保证,一举两得,很不错。

而最近HCI的官网也要重构了,部门一女生在写注册信息的表单验证的时候遇到了许多问题,其中一个就是邮箱的验证。

老实说,一开始俺就觉得邮箱验证本身就不难,不就一个正则表达式的匹配问题么,自己不会写也可以去网上找到啊。

可是等看了妹子在网上找到的邮箱正则匹配的代码之后,我自己也去谷歌了一下,发现好多所谓的“网友”写的匹配式真的是漏洞百出。没有一个符合我自己的要求的(可能我太严格了= =),于是我就打算花上个十几分钟写个匹配邮箱的正则表达式。

说实话,做跟说完全是两码事,本来我以为这么一个表达式也就几分钟的事情,结果愣是让我耗上了快半个多小时。现在让我来总结一下我遇到的问题。

a)邮箱地址后缀是提供邮箱服务商的域名后缀(也就是符号”@“后面的内容),千奇百怪,而且很多域名后缀也在不断的更新,无法做到绝对匹配,所以我这里也无能为力

b)对于符号“@”前面的字段,我们是有足够把握做到绝对的匹配的,因为事实上要验证的规则”不多“

c)为什么”不多“加了引号呢?因为其实规则真心挺多的。首先,不同的邮箱服务提供商对自己的邮箱命名规则就没有一个统一的标准。163邮箱允许字母+数字+下划线,而对下划线的个数已经重复方式也没有严格规定,所以也就导致了有类似于“a______v@163.com”这样的邮箱地址。而谷歌邮箱更是奇葩,它居然不支持下划线,却支持英文句点“.”,如果你不介意,你完全可以注册一个类似于“a.b.c.d.e.f@gmail.com"的邮箱。所以,邮箱格式的多样化就造成了正则表达式可能会比较复杂。

d)不过好消息是,无论是国内的163还是国外的谷歌,都不允许符号字符开头或结尾。这给了我们一个十分良好的信息。因为那样我们就可以放心地关注字符串中间的那些字符的匹配了(因为开头和结尾必定是数字或字母)。

e)网上许多网友写的邮箱正则表达式都很不严谨,居然能匹配到"___a___@163.com""abc@kkk.com.com.com.com"这类奇葩的邮箱地址。这是我不能忍受的。

综上所述,我纠结了半个多小时之后终于将比较严谨的正则表达式憋出来了:

/^[a-zA-Z0-9]([a-zA-Z0-9]|_+[a-zA-Z0-9]|[a-zA-Z0-9]*\.[a-zA-Z0-9])+@\w+\.[a-zA-Z]{1,4}\.{0,1}[a-zA-Z]{0,4}$/

总结:本人乃小菜一颗,上述的表达式纯属个人见解,若各位大神有更好的匹配式,欢迎指点。PS:对于邮箱的域名后缀的匹配本人实在无能为力,如果有知道如何解决的大神,请赐教,感激不尽!

正则表达式匹配邮箱账号相关推荐

  1. java邮箱地址正则表达式_Java 正则表达式匹配邮箱地址

    作者 : 卿笃军 正则表达式中的部分元字符: 元字符 正则表达式中的写法 意义 . . 代表任意一个字符 \d \\d 代表0~9的任何一个数字 \D \\D 代表任何一个非数字字符 \s \\s 代 ...

  2. JS常用的正则表达式(匹配邮箱、名字、手机号等等)

    JS常用的正则表达式(匹配邮箱.名字.手机号等等) /* 匹配英文或字符名字的正则表达式 */ var userNameReg = /^\w{6,30}$/; /* 匹配邮箱的正则表达式 */ var ...

  3. 正则表达式匹配邮箱 php,php中匹配邮箱地址正则表达式

    一篇php中匹配邮箱地址正则表达式实例,邮箱地址替换正则我常用的正则匹配表达式:/^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+ ...

  4. 【linux】函数grep正则表达式匹配邮箱地址

    这个问题是看了很多文章总结而得,还没有了解shell编程的朋友们可以来看看,自己的一些见解,欢迎指出错误和不足.话不多说,我们直接进入主题! 如何直接用命令匹配邮箱地址? 首先我们要知道常见的邮箱格式 ...

  5. input正则邮箱_用正则表达式匹配邮箱地址

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. #小练习 正则表达式匹配邮箱名称

    s='zhg@142.com,    ziiwe@163.com,zh__1334@sin.com, zhg223@sina.com, [Master]zhg13@sina.com,[科比]Kobe@ ...

  7. Python匹配邮箱号的正则表达式

    Python中用正则表达式匹配邮箱地址可以使用如下代码: import repattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'str ...

  8. php用正则_php 正则表达式匹配(持续更新)

    正则表达式匹配网址: header('Content-type:text/html;charset=utf-8'); $str = ' 百度http://www.baidu.com网站 谷歌https ...

  9. 正则表达式:邮箱匹配

    格式概述 邮箱地址符合"名称@域名"规则.字符"@"在邮箱地址的"名称"和"域名"之间,邮箱地址名称只允许由英文字母.数 ...

最新文章

  1. Mac拷贝/复制文件夹路径快捷键
  2. 才做三个月的新业务,为何唐岩对陌陌直播寄予厚望
  3. 零基础实战迁移学习VGG16解决图像分类问题
  4. filter operation implementation in Gateway framework
  5. ”*“在正则表达式和通配符的应用
  6. cocos2d-x学习资源汇总(持续更新。。。)
  7. 5G网络将给物联网卡带来什么发展前景
  8. Windows平台release版本内存泄漏检查办法
  9. Hbuilder Webview调试+逍遥安卓模拟器
  10. Centos7.0下MySQL的安装
  11. atitit 用什么样的维度看问题.docx 如何了解 看待xxx
  12. 简单理解LSTM神经网络
  13. redis1.2.6 sds.c
  14. Polish calculation
  15. 外研社计算机英语试题,外研社七年级下册英语期末试卷
  16. 阿里云产品优惠推广链接
  17. 批量调整公司代码层会计科目数据-OB_GLACC12
  18. 如何使用Python画QQ图
  19. python判断数据类型是不是字典的方法
  20. SANGFOR WOC初级认证——加速技术详解

热门文章

  1. python 内置属性__setattr___python 属性四种管理方法property,descriptor, __get/setattr__, __getatribute __...
  2. 慕课matlab学习 第三章-017 函数文件的定义和调用
  3. 某信息安全攻防大赛周周练考核(一) Writeup By 2ha0yuk7on
  4. JavaScript中的表单编程
  5. Qt国际化出错导致汉化不完全
  6. 使C#语言编程更加高效的伎俩
  7. 用Python开始机器学习(6:朴素贝叶斯分类器)
  8. 利用JavaScript分别实现倒计时、跑马灯和打字机效果
  9. c语言butter函数,butter函数
  10. 综合业务数字网(ISDN)--网络大典