實例1、只允許英文字母、數字、下划線、英文句號、以及中划線組成
舉例:wanan-1234@qqqq.com
分析郵件名稱部分:
- 26個大小寫英文字母表示為
a-zA-Z
- 數字表示為
0-9
- 下划線表示為
_
- 中划線表示為
-
- 由於名稱是由若干個字母、數字、下划線和中划線組成,所以需要用到
+
表示多次出現
根據以上條件得出郵件名稱表達式:[a-zA-Z0-9_-]+
分析域名部分:
一般域名的規律為“[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_-]+)+
最終表達式:
由於郵箱的基本格式為“名稱@域名”,需要使用“^”匹配郵箱的開始部分,用“$”匹配郵箱結束部分以保證郵箱前后不能有其他字符,所以最終郵箱的正則表達式為:
^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$
實例2、名稱允許漢字、字母、數字,域名只允許英文域名
舉例:程咬金001Abc@lenovo.com.cn
分析郵件名稱部分:
- 漢字在正則表示為
[\u4e00-\u9fa5]
- 字母和數字表示為
A-Za-z0-9
通過分析得出郵件名稱部分表達式為[A-Za-z0-9\u4e00-\u9fa5]+
分析郵件域名部分
郵件部分可以參考實例1
中的分析域名部分
。
得出域名部分的表達式為[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+
。
最終表達式:
我們用@符號將郵箱的名稱和域名拼接起來,因此完整的郵箱表達式為
^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$