赞
踩
项目中要给用户发送邮件,这时候需要校验用户输入的邮箱的有有效性,这肯定用正则呀。
虽然没有统一的邮箱账号格式,但是所有邮箱都符合“名称@域名”的规律。对于名称和域名的字符限制,我们可以根据项目的情况定义一个,比如只允许有英文、数字、下划线等组成。
例如zhagnfsan-01@qq.com
,这也是我们常见的邮箱格式,
由于名称是由若干个字母、数字、下划线和中划线组成,所以需要用到+表示多次出现
[a-zA-Z0-9_-]+
域名是有多级域名的,比如"三级域名.二级域名.顶级域名",比如“qq.com”、“www.qq.com”、“mp.weixin.qq.com”、“163.com”,这样域名也是有规律的,那就是“XX.XX.XX”,就是由第一个”XX“拼接上多个“.XX”的规律。
这样,又可以江域名分为两部分来看,首先是第一个XX,可以表示为[a-zA-Z0-9_-]+
;然后是后面重复的".XX",一个“.XX”可表示为.[a-zA-Z0-9_-]+
,多个的话就是(.[a-zA-Z0-9_-]+)+
。
综上所述,域名部分可以表示为[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+
最终表达式:由于邮箱的基本格式为“名称@域名”,需要使用“^”匹配邮箱的开始部分,用“$”匹配邮箱结束部分以保证邮箱前后不能有其他字符,所以最终邮箱的正则表达式为:
^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$
现在用中文命名的邮箱也合法了,所以会有这样的邮箱:张三@lenovo.com.cn
邮件名称部分表达式:[A-Za-z0-9\u4e00-\u9fa5]+
根据前面分析,得出域名部分的表达式为[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+
最终表达式:我们用@符号将邮箱的名称和域名拼接起来,因此完整的邮箱表达式为
^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。