邮箱的一般格式为:名称@域名。
我们这里需要匹配的邮箱中名称可以包含汉字、字母、数字,域名只允许为英文和数字。
例如:张三zs333@domain.com
邮件名称部分:
- 汉字在正则中表示为[\u4e00-\u9fa5]
- 字母和数字表示为A-Za-z0-9
因此邮件名称部分的正则表达式整理如下:
[A-Za-z0-9\u4e00-\u9fa5]+
邮件域名部分:
一般域名的规律为“[N级域名][三级域名.]二级域名.顶级域名”,比如“qq.com”、“www.qq.com”、“mp.weixin.qq.com”、“12-34.com.cn”,分析可得域名类似“xx .xx .xx .xx”组成。
- “xx”部分可以表示为[a-zA-Z0-9_-]+
- “.xx”部分可以表示为\.[a-zA-Z0-9_-]+
- 多个“.xx”可以表示为(\.[a-zA-Z0-9_-]+)+
得出域名部分的表达式为[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+。
我们综合上面两部分得出最终表达式:
^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$