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

作者&投稿:邲柔 (若有异议请与网页底部的电邮联系)
如何用正则表达式判断邮箱的格式呢?~

function CheckEmail(email)
{
var reg = new Regex("(?:[a-z\d]+[_\-\+\.]?)*[a-z\d]+@(?:([a-z\d]+\-?)*[a-z\d]+\.)+([a-z]{2,})+","ig");
return reg.test(email);
}

(\\w+)(\\.\\w+)*(\\@\\w+){1}(\\.[a-z]{2,3}){1,2}
简单的支持 :aaa@bb.cc(例如:xiaoming@qq.cn)
复杂的支持:aaa.bbb.ccc.ddd....@eee.fff.ggg-->(.fff.ggg->例如.com.cn)
(例如:xiaoming.mama.baba.yeye.nainai...@qq.cn.com)

\\w :匹配任何字类字符,包括下划线。与"[A-Za-z0-9_]"等效。
(\\.\\w+)*: 表示".aaa"可以多个也可以没有.
(\\@\\w+){1}: 表示"@bbb"有且存在一个.
[a-z]{2,3} :表示不需要数字2-3个 例如"aa","bbb".
(\\.[a-z]{2,3}){1,2} :表示 ".aa(a)"有1-2个,例如".com.cn"

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

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



完整形式:([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/

.*@.*\.?.*?\.(com|cn) 
#以上正则匹配你提供的格式,也匹配ABC@163.com这种
#括号里的后缀可以自己添加,例如net/edu/us/gov等等


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;}
}

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>

PHP 帮忙写个正则表达式 判断QQ邮箱格式
答:qqmail='33555555@qq.com';if(preg_match('|^[1-9]\d{4,10}@qq\.com$|i',$qqmail)){echo $qqmail,' 是qq邮箱';}else{echo $qqmail,' 不是qq邮箱';}

JS 邮箱正则表达式
答:开始必须是一个或者多个单词字符或者是-,加上@,然后又是一个或者多个单词字符或者是-。然后是点“.”和单词字符和-的组合,可以有一个或者多个组合。代码如下: function isEmail(str){ var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/; return reg.test(...

...\\@\\w{0,}\\.{1}\\w{0,}"; //正则表达式,定义邮箱格式
答:String regex = "\\w{0,}\\@\\w{0,}\\.{1}\\w{0,}";上面这也叫做正确邮箱啊??只要有 @ 和 . 的邮箱都正确。。相当于几乎没有验证 这样写就OK了 "^\\w+@\\w+.\\w+$"这样好多了。。前面和后面至少有一个字符 。前面和后面至少有一个字符 这还是比较完整的电子邮箱验证,...

求各种各样的正则表达式的写法,如:密码(0-9,a-z(分大小写)),用户名...
答:验证身份证号(15位或18位数字):"^\d{15}|\d{18}$"。验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。利用正则表达式限制网页表单里...

C# 正则表达式(验证QQ邮箱)
答:string reg="\w+([-+.]\w+)*@qq\w+([-.]\w+)*\.\w+([-.]\w+)*";

winform窗体程序中如何用正则表达式判断邮箱格式
答:using System.Text.RegularExpressions;public static bool IsEmail(string value){ return Regex.IsMatch(value, @"^(?!\.)(""([^""\r\\]|\\[""\r\\])*""|([-a-z0-9!#$%&'*+/=?^_`{|}~]|(?<!\.)\.)*)(?<!\.)@[a-z0-9][\w\.-]*[a-z0-9]\.[a-z][a-z...

php判断邮箱格式
答:简单说下吧,太复杂了你也听不懂,/ 和 / 表示正则表达式的开始和结束,()表示需要匹配部分的规则,[\w\-]表示这部分允许是字母、数字和下划线(_),再仔细看上面这句话,就是说,邮箱要由三个部分组成,第一部分到@符号,第二部分到点(.),第三部分到结束,每一部分都只能是字母、数字和...

有没有一个通用的正则表达式来验证多个类型的邮箱
答:邮箱验证 var par = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;这两个都可以,你试...

如何用JAVA语句判断邮箱的正确格式
答:package com.test;import java.util.regex.Matcher;import java.util.regex.Pattern;public class StringTest { public static void main(String[] args) { Pattern p = Pattern.compile("^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\\.([a-zA-Z0-9_-])+)+$");Matcher m = p....

求能验证一些格式邮箱的正则表达式 hah123@vip.sina.com ;zhao_hui@qq...
答:com; 不能验证1234@163.com 我看网易、腾讯、新浪、搜狐注册邮箱都要求第一字符为 英文字母。^[\w\.-]+?@([\w\-]+\.){1,2}[a-zA-Z]{2,3} 这个能验证 hah123@vip.sina.com,zhao_hui@qq.com,1234@163.com 不知道你在什么语言环境下用,js、php要加// 如下:/正则表达式/ ...