JS正则匹配邮箱格式
观察一些邮箱格式,有些邮箱格式简单,有些复杂,在网上找了个邮箱的正则表达式,分析一下邮箱的规则。
该表达式:
/^\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正则验证邮箱格式
首先总结一下邮箱的格式,邮箱由@分隔,左侧为用户名,右侧为邮箱域名,用户名可以由字母.数字._.-以及.组成,但是必须是以字母或数字开头,邮箱的域名是由字母.数字.-和.组成的,但是必须以.加上字母的 ...
- 在js中实现邮箱格式的验证
在js中实现邮箱格式的验证 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><htm ...
- js正则匹配的一个日常应用
应用实例 1 /** 将段落中的 \n 转换为 <p></p>, 规范存储 */ 2 function formatParagraphForStore(val) { 3 var ...
- JS正则密码复杂度校验之:JS正则匹配半角英文符号
概述 在JS密码校验中常常会遇到密码强度的校验需求,借用一位朋友提问的图,他在工作中遇到的一个比较经典的密码强度校验要求: 这个需求有两个难点,一,是如何使用正则匹配所有半角英文标点符号,二,是如何验 ...
- 【php正则】php正则匹配UTF-8格式的中文汉字 和 【,】【,】【。】等符号
1.php正则匹配UTF-8格式的中文汉字 和 [,][,][.]等符号 if (preg_match_all("/([\x{4e00}-\x{9fa5}]+((,)?)+((,)?)+(( ...
- js判断手机邮箱格式(正则)
function fun() { var realname = document.getElementById("realname"); var telephone = docum ...
- js正则匹配两位小数
今天写一个用js正则校验最多保留两位小数的格式. a = /^\d+|\d+\.\d{1,2}$/; 测试 a.test(1.222); 结果:true 一下蒙了,怎么可能,最后找了好久,原来需要把^ ...
- js 正则表达式,匹配邮箱/手机号/用户名
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- js 正则匹配 域名【host】
如果直接在js中是可以直接取到hostname的,以下方式是通过正则匹配: var url = "http://www.cnblogs.com/cench" var reg = / ...
随机推荐
- 开始编写Makefile
1.Makefile 的编写规则一 目标列表:关联性列表 命令列表 目标列表:可以是多个以空格隔开多个目标文件 关联列表页称为先决条件:同样是用个或多个空格分开的目标文件 命令列表:用<tab& ...
- 数码管一些列功能的verilog实现
将数码管各段发光元件的正极连在一起称为共阳数码管,且该共点击链接电路电源的正极,而各段的负极连接驱动电路.它适用于低电平有效的驱动电路,当某段的驱动电平为低电平时,该段发亮:将数码管各段发光元件的负极 ...
- 正则及re模块-基础(一)
正则表达式 一说规则我已经知道你很晕了,现在就让我们先来看一些实际的应用.在线测试工具 http://tool.chinaz.com/regex/ http://tool.oschina.net/ ...
- AtCoder Grand Contest 008题解
传送门 \(A\) 分类讨论就行了 然而我竟然有一种讨论不动的感觉 int x,y; inline int min(R int x,R int y){return x<y?x:y;} inlin ...
- Day13:H5+JS+C3
css布局中,什么是BFC BFC是Block formatting context的缩写,表示"块级格式化上下文". 设置BFC的元素,是一个独立的渲染区域,只有Block-le ...
- [代码审计]四个实例递进php反序列化漏洞理解【转载】
原作者:大方子 原文链接:https://blog.csdn.net/nzjdsds/article/details/82703639 0x01 索引 最近在总结php序列化相关的知识,看了好多前辈师 ...
- 【CSP模拟赛】天才绅士少女助手克里斯蒂娜(线段树&读入优化&输出优化)
题面描述 红莉栖想要弄清楚楼下天王寺大叔的显像管电视对“电话微波炉(暂定)”的影响.选取显像管的任意一个平面,一开始平面内有个n电子,初始速度分别为vi,定义飘升系数为 $$\sum_{1\leqsl ...
- shell脚本实例,通向shell脚本大师的必经之路
概述 读书百遍其义自见,shell脚本也是,只要例子看得多了,自然就知道怎么写了.这里主要整理了20几个例子,因为内容比较多,所以分了几次来做介绍了.下面的实例最好先自己思考怎么去实现,然后再看下实现 ...
- postman上传excel,java后台读取excel生成到指定位置进行备份,并且把excel中的数据添加到数据库
最近要做个前端网页上传excel,数据直接添加到数据库的功能..在此写个读取excel的demo. 首先新建springboot的web项目 导包,读取excel可以用poi也可以用jxl,这里本文用 ...
- 14.LAMP服务 Linux Apache Mysql Php和防护机制 xinetd、tcp wapper
一.安装LAMP服务 Linux Apache Mysql Php 要求操作系统支持 php解析 apache调用php插件解析 phpmyadmin yum install ...