只允许英文字母、数字、下划线、英文句号、以及中划线组成
举例:mengjunjie-001@gmail.com
1.分析邮件名称部分:
26个大小写英文字母表示为a-zA-Z
数字表示为0-9
下划线表示为_
中划线表示为-
由于名称是由若干个字母、数字、下划线和中划线组成,所以需要用到+表示多次出现
根据以上条件得出邮件名称表达式:[a-zA-Z0-9_-]+
2.分析域名部分:
一般域名的规律为“[N级域名][三级域名.]二级域名.顶级域名”,比如“qq.com”、“www.qq.com”、“mp.weixin.qq.com”、“12-34.com.cn”,分析可得域名类似“** .** .** .**
”组成。
“**
”部分可以表示为[a-zA-Z0-9_-]+
“.**
”部分可以表示为.[a-zA-Z0-9_-]+
多个“.**
”可以表示为(.[a-zA-Z0-9_-]+)+
综上所述,域名部分可以表示为[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+
3.最终表达式
由于邮箱的基本格式为“名称@域名”,需要使用“^”匹配邮箱的开始部分,用“$” 匹配邮箱结束部分以保证邮箱前后不能有其他字符,所以最终邮箱的正则表达式为:
^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$