js正则匹配邮箱_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
tayood@sodm
_ete_derg3748edfe@_egiou_die4355.diouue
5544893、tayood、_ete_derg3748edfe匹配【1】
@dd、@sod、@_egiou_die4355匹配【3】
.
com、m、.diouue匹配的【5】
在写个有两个【2】的情况:
d-eges@doud.sed
.ergd-eges匹配的是【2】
写个有三个个【2】和三个【4】的情况。
d23_we-derw@_343de-eres-edd.34
.d23_we-derw匹配的是【2】
-eres-edd.34批评的是【4】
最后⼀个虽然也是点加数字字母下划线的组合,但是是【5】匹配的,因为【5】的是必须存在的,不是可有可⽆的。
根据表达式应该匹配到的邮箱格式:
55448934@dd
tayood@sodm
_ete_derg3748edfe@_egiou_die4355.diouue
d-eges@doud.sed
d23_we-derw@_343de-eres-edd.34
不该匹配到的⼏种格式:
.derg@dfo(以点开头,不匹配【1】)
der*g@dfo(含有*特殊字符,不匹配【1】)
<(不匹配【3】)
der.34@@.con(不匹配【3】)
dwll@dooe(不匹配【5】)
dao3243(不匹配【3】【5】)
测试代码:
console.log("----------应该匹配到的----------");
console.log("55448934@dd,结果:"+/^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/.test("55448934@dd")); console.log("tayood@sodm,结果:"+/^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/.test("tayood@sodm"));
console.log("_ete_derg3748edfe@_egiou_die4355.diouue,结果:"+/^\w+([\.\-]\w+)*\@\w+([\.\-
]\w+)*\.\w+$/.test("_ete_derg3748edfe@_egiou_die4355.diouue"));
console.log("d-eges@doud.sed,结果:"+/^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/.test("d-eges@doud.sed"));
console.log("d23_we-derw@_343de-eres-edd.34,结果:"+/^\w+([\.\-]\w+)*\@\w+([\.\-
]\w+)*\.\w+$/.test("d23_we-derw@_343de-eres-edd.34"));
console.log("----------不该匹配到的----------");
console.log(".derg@dfo,结果:"+/^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/.test(".derg@dfo"));
console.log("der*g@dfo,结果:"+/^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/.test("der*g@dfo")); 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"));
图⽰: