观察一些邮箱格式,有些邮箱格式简单,有些复杂,在网上找了个邮箱的正则表达式,分析一下邮箱的规则。

该表达式:

/^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/

拆分:

【1】/^\w+

以英文,数字,下划线开头,(一个或多个。)

【2】([\.\-]\w+)*

跟着点或中线任意一个,然后再跟着的英文、数字、下划线(一个或多个)。

这个整个部分用圆括号括起来,可以零个一个或多个。(可有可无,可多个)

【3】\@\w+

跟着一个@符号,后面英文、数字、下划线(一个或多个)

【4】([\.\-]\w+)*

跟着点或中线任意一个,然后再跟着的英文、数字、下划线(一个或多个)。

这个整个部分用圆括号括起来,可以零个一个或多个。(可有可无,可多个)

【5】\.\w+

跟着一个点,后面跟着英文、数字、字母、下划线(一个或多个)

整个表达式没有|或这种情况,所以就是一个从左到右的整体。其中有两个一样的部分【2】和【4】都是*,*代表零个一个或多个,是可有可无,这里面有两个*的地方。可以用匹配简单邮箱和复杂邮箱。

这两个可有可无的部分,一个在@符号前面,一个在@符号后面,这个组合是点或中线,加至少一个字母下划线英文的组合。

根据这个组合写几个情况例如:

这个组合不存在

.a(一个点后面跟着一个字母)

.abc.abc(这个组合有两个)

-34dvd-dege-derg(三个以-开头的组合)

.adf-dreg.der(两个以.开头带数字的,一个以短线开头带数字的)

这两个部分的数量词是星号,可有可无。

根据该表达式,先写最简单,这两个部分【2】和【4】是零个的情况:

55448934@dd.com

tayood@sod.comm

_ete_derg3748edfe@_egiou_die4355.diouue

5544893、tayood、_ete_derg3748edfe匹配【1】

@dd、@sod、@_egiou_die4355匹配【3】

.com、.comm、.diouue匹配的【5】

在写个有两个【2】的情况:

dged_derw.ergd-eges@doud.sed

.ergd-eges匹配的是【2】

写个有三个个【2】和三个【4】的情况。

dsfe_derd.erg.erd23_we-derw@_343de-eres-edd.34.com

.erg.erd23_we-derw匹配的是【2】

-eres-edd.34批评的是【4】

最后一个虽然也是点加数字字母下划线的组合,但是.com是【5】匹配的,因为【5】的是必须存在的,不是可有可无的。

根据表达式应该匹配到的邮箱格式:

55448934@dd.com

tayood@sod.comm

_ete_derg3748edfe@_egiou_die4355.diouue

dged_derw.ergd-eges@doud.sed

dsfe_derd.erg.erd23_we-derw@_343de-eres-edd.34.com

不该匹配到的几种格式:

.derg@dfo.com(以点开头,不匹配【1】)

der*g@dfo.com(含有*特殊字符,不匹配【1】)

34.cm(不匹配【3】)

der.34@@.con(不匹配【3】)

dwll@dooe(不匹配【5】)

dao3243(不匹配【3】【5】)

测试代码:

console.log("----------应该匹配到的----------");

console.log("55448934@dd.com,结果:"+/^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/.test("55448934@dd.com"));

console.log("tayood@sod.comm,结果:"+/^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/.test("tayood@sod.comm"));

console.log("_ete_derg3748edfe@_egiou_die4355.diouue,结果:"+/^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/.test("_ete_derg3748edfe@_egiou_die4355.diouue"));

console.log("dged_derw.ergd-eges@doud.sed,结果:"+/^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/.test("dged_derw.ergd-eges@doud.sed"));

console.log("dsfe_derd.erg.erd23_we-derw@_343de-eres-edd.34.com,结果:"+/^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/.test("dsfe_derd.erg.erd23_we-derw@_343de-eres-edd.34.com"));

console.log("----------不该匹配到的----------");

console.log(".derg@dfo.com,结果:"+/^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/.test(".derg@dfo.com"));

console.log("der*g@dfo.com.com,结果:"+/^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/.test("der*g@dfo.com.com"));

console.log("34.cm,结果:"+/^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/.test("34.cm"));

console.log("der.34@@.con,结果:"+/^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/.test("5der.34@@.con"));

console.log("dwll@dooe,结果:"+/^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/.test("dwll@dooe"));

console.log("dao3243,结果:"+/^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/.test("dao3243"));

图示:

js 正则匹配邮箱_JS正则匹配邮箱格式相关推荐

  1. html js正则表达式语法,js正则表达式 非中文_js正则表达式匹配中文_js正则表达式语法...

    腾讯云活动聚集了最新的降价打折.特惠折扣等资料,你在这里可以寻找云服务器.域名..小流程等等多种不同产品的促销活动,还有这些品牌的免费试用哦. 因为对js中的正则不太了解,可以参考一下js 中正则表达 ...

  2. js 对一个字段去重_js正则去重及(?=)的匹配规则

    今天首先要讲的是如何利用正则去重复,例如有一串字符串'122345333',如何去其中的重复元素? var str='122345333'; while((str!=(str=str.replace( ...

  3. 前端 js 邮箱正则判断 (支持多个邮箱判断)

    话不多说,上代码: var regEmail = /^((([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6}\;))*(([a-z0-9_\.-]+)@([\da ...

  4. JS正则表达式之邮箱的正则

    使用正则表达式编写邮箱的正则 /*电子邮箱的基本格式:hello@abc.com.cnhello部分:表示任意的字母数字以及小圆点(.),如abc.abc@qq.com,不过小圆点的部分是可有可无的, ...

  5. jq 正则判断邮箱_Python正则15分钟入门

    lypython群里有同学问我,如何从大量格式不确定的word文档抽取姓名.电话号码.邮箱等信息存入excel表格.通过之前我们的文章,他已经学会读取和写入文档和表格,但就是无法处理格式不确定的文档. ...

  6. 10、正则表达式 (笔试题、语法规则、正则对象方法、正则实例属性、支持正则表达式的String对象的方法、贪婪匹配与非贪婪匹配)

    正则表达式 目录 10.1 语法规则 10.1.1 创建方法 1.直接量 2.构造方法RegExp() 10.1.2 三个属性i,g,m 10.1.3 方括号 10.1.4 元字符 10.1.5 量词 ...

  7. java正则全局匹配_正则表达式全局匹配模式(g修饰符)

    正则表达式g修饰符: g修饰符用语规定正则表达式执行全局匹配,也就是在找到第一个匹配之后仍然会继续查找. 语法结构: 构造函数方式: new RegExp("regexp",&qu ...

  8. python表达匹配_python 中文正则表达匹配

    需求:由于某个n年前的工具的错误,在复制一批文件的时候产生了大量的"复件xxxxxxx""复件(2)XXXXX"等类似文件,由于目录结构深,文件多,预计在500 ...

  9. 正则基础之 NFA引擎匹配原理

    来源:http://www.jb51.net/article/19332.htm 1 为什么要了解引擎匹配原理 一个个音符杂乱无章的组合在一起,弹奏出的或许就是噪音,同样的音符经过作曲家的手,就可以谱 ...

最新文章

  1. 如何取小数点前两位并四舍五入?
  2. java通过反射,泛型将定义的对象与对象之间互转
  3. Coursera algorithm II PA4
  4. Qt Creator使用外部工具
  5. Java黑皮书课后题第4章:*4.8(给出ASCII码对应的字符)编写程序,得到一个ASCII码的输入(0~27之间的一个整数),然后显示该字符
  6. DNS and Bind (二)
  7. json 潜逃 结构体_JSON还原为结构体 - osc_t5zhwnvx的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. 计组之存储系统:5、cache(cache功能、cache工作原理、cache性能分析)
  9. 前端的深拷贝和浅拷贝_javascript中的深拷贝和浅拷贝?
  10. 深度学习各场景评估指标总结
  11. 虚拟服务器网络无法连接,VMware虚拟机XP系统网络无法连接受限制或无连接解决方法...
  12. Houdini11:材质
  13. Soui Button学习一
  14. 在MATLAB绘制三角形区域上的二元函数图像
  15. Re.常系数齐次递推
  16. 一些框架图的色彩搭配
  17. 怎么看微信撤回的效果?教你看微信已撤回的消息、图片
  18. 添闻地图商户采集教程-含高德、腾讯、百度
  19. python迭代对象是什么意思_python的迭代对象
  20. 金蝶BOS开发代码调用过程

热门文章

  1. 测试你有学计算机天赋,个人天赋测试 测试你的学科天赋
  2. 作为C++后端开发程序员,应该彻底理解Epoll实现原理
  3. parseInt,parseFloat,Number的区别
  4. 实名认证api接口的类型有哪些
  5. ZCU102制作PYNQ v2.7镜像
  6. matlab绘制地球仪
  7. 网页html里播放苹果音频m4a格式文件
  8. Star CCM+ 案例 - 旋风分离器 (cyclone separator)-5 网格加密
  9. 在线编辑Markdown数学公式(LaTex)网站链接
  10. 逸管家:共享人才时代已经到来,你做好准备了吗?