正则表达式限定长度_自己写一个通用的邮箱正则表达式

今天把正则又复习了一遍,为了加深记忆,自己写一个邮箱的正则表达式

咱们先来看几个合法的邮箱地址

hd33322@nat123.com

maksim.kim.82@d-link.ua

vova_lazarev1969@jaagers.com

b4-service.s@zhaopinmail.com

通过观察上面几个例子,不难看出所有邮箱地址都分为两个部分,@左边是一部分,右边为令一部分,那么我们可以分成两部分来书写正则表达式

左边一般是由数字"[0-9]"、字母"[a-zA-Z]"、下划线"_"、减号"-"、英文句号"."组成,似乎没

有明确限定长度,而且不是以下划线"_"、减号"-"、英文句号"."来开头或者结尾的,那么左边

部分可以写成 [0-9a-zA-Z]+([.-_]*[0-9a-zA-Z]+)*

右边是域名部分,除字母数字英文句号外,也可能包含下划线和减号,而且还有多级域名,但

最后的顶级域名比较固定,一般是2到6位字母结束,例

如".cn"、".com"、".org"、".museum"等,故正则可以表示为

([0-9a-zA-Z]+[-_]*[0-9a-zA-Z]+.)+[0-9a-zA-Z]{2,6}

两边合并,整个表达式为: /^[0-9a-zA-Z]+([.-_]*[0-9a-zA-Z]+)*@([0-9a-zA-Z]+[-_]*[0-9a-zA-Z]+.)+[0-9a-zA-Z]{2,6}$/

要注意的是,减号"-"在正则里是连字符,英文句号"."是元字符,所以为了代表他们的字面意

思,要加上反斜杠""进行转义

测试一下

let emails = [
  'hd33322@nat123.com',
  'maksim.kim.82@d-link.ua',
  'vova_lazarev1969@jaagers.com',
  'b4-service.s@zhaopinmail.com'
]
const regulation = /^[0-9a-zA-Z]+([.-_]*[0-9a-zA-Z]+)*@([0-9a-zA-Z]+[-_]*[0-9a-zA-Z]+.)+[0-9a-zA-Z]{2,6}$/
console.log(emails.every(email => regulation.test(email)))
//true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值