求正则表达式验证邮箱格式

求一个正则表达式可以匹配常用的邮箱以外还可以使这样的格式匹配... 求一个正则表达式 可以匹配常用的邮箱以外 还可以使 这样的格式匹配 展开
 我来答
嗳尔yr
2018-03-30 · TA获得超过1万个赞
知道小有建树答主
回答量:88
采纳率:100%
帮助的人:3.4万
展开全部

虽然没有统一的邮箱账号格式,但是所有邮箱都符合“名称@域名”的规律。对于名称和域名的字符限制,我们可以根据项目的情况定义一个,比如只允许有英文、数字、下划线等组成。下面举例实现一些验证邮箱格式的正则表达式。 

实例1:只允许英文字母、数字、下划线、英文句号、以及中划线组成

举例:sunxiuzhen@dctc.org.cn 

分析邮件名称部分:

  • 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_-]+)+$

百度网友eeb8c26
推荐于2017-11-17 · TA获得超过482个赞
知道小有建树答主
回答量:224
采纳率:0%
帮助的人:218万
展开全部
完整形式:([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})

学习使用正则表达式,少不了正则表达式工具的辅助呀,推荐一款工具:expresso,下载地址:http://www.ultrapico.com/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
76de1
2014-01-22 · TA获得超过1158个赞
知道小有建树答主
回答量:666
采纳率:100%
帮助的人:494万
展开全部
.*@.*\.?.*?\.(com|cn) 
#以上正则匹配你提供的格式,也匹配ABC@163.com这种
#括号里的后缀可以自己添加,例如net/edu/us/gov等等
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ace_fei
2014-01-22 · TA获得超过2013个赞
知道小有建树答主
回答量:734
采纳率:100%
帮助的人:725万
展开全部
function CheckMail(mail) {
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (filter.test(mail)) return true;
else {
alert('您的电子邮件格式不正确');
return false;}
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
0o壹次心o0
高粉答主

2015-09-18 · 每个回答都超有意思的
知道大有可为答主
回答量:2.5万
采纳率:59%
帮助的人:3050万
展开全部
1. PHP 邮箱验证正则表达式:
preg_match("/^[0-9a-zA-Z]+@(([0-9a-zA-Z]+)[.])+[a-z]{2,4}$/i",$email );
如果需要更加完善、严格的验证,修改这个正则表达式即可。

2. PHP 邮箱验证正则表达式实例:
<?php
function isEmail($email){
if(preg_match("/^[0-9a-zA-Z]+@(([0-9a-zA-Z]+)[.])+[a-z]{2,4}$/i",$email )){
return '是邮箱';
} else{
return '不是邮箱';
}
}
?>

3. Javascript(js) 邮箱验证正则表达式:
myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,4}$/;
这个可以验证 形如:i@julying.com ,i@i.com 这种邮箱

4. Javascript(js) 邮箱验证正则表达式实例:
<script type="text/javascript">
function isEmail(val){
var myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,4}$/;
if(!myreg.test(val))
return '不是邮箱';
return '是邮箱';
};
alert( isEmail('i@julying.com') );
</script>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式