总结了一下合法的email地址格式如下:
  1. 首字符必须用字母,而且其它的字符只能用26个大小写字母、0~9及_-.@符号
  2. 必须包含一个并且只有一个符号“@”
  3. @后必须包含至少一个至多三个符号“.”
  4. 第一个字符不得是“@”或者“.”(第一步已检查过了)
  5. 不允许出现“@.”或者.@
  6. 结尾不得是字符“@”或者“.”
  现在就把本人写的代码发布出来给大家做参考。以下代码在VS2005(UNICODE)中测试通过,应该来说基本满足大部分的验证需求:
  //检查字符的有效性,包括26个大小写字母、0~9及_-.@符号
 bool JCLoginGameLayer::IsValidChar(char ch)
{
if( (ch>=97) && (ch<=122) ) //26个小写字母
return true;
if( (ch>=65) && (ch<=90) ) //26个大写字母
return true;
if((ch>=48) && (ch<=57)) //0~9
return true;
if( ch==95 || ch==45 || ch==46 || ch==64 ) //_-.@
return true;
return false;
}
bool JCLoginGameLayer::IsValidEmail(string strEmail)
{
if( strEmail.length()<5 ) //26个小写字母
return false;

char ch = strEmail[0];
if( ((ch>=97) && (ch<=122)) || ((ch>=65) && (ch<=90)) )
{
int atCount =0;
int atPos = 0;
int dotCount = 0;
for(int i=1;i<strEmail.length();i++) //0已经判断过了,从1开始
{
ch = strEmail[i];
if(IsValidChar(ch))
{
if(ch==64) //"@"
{
atCount ++;
atPos = i;
}
else if( (atCount>0) && (ch==46) )//@符号后的"."号
dotCount ++;
}
else
return false;
}
//6. 结尾不得是字符“@”或者“.”
if( ch == 46 )
return false;
//2. 必须包含一个并且只有一个符号“@”
//3. @后必须包含至少一个至多三个符号“.”
if( (atCount!=1) || (dotCount<1) || (dotCount>3) )
return false;
//5. 不允许出现“@.”或者.@
int x,y;
x=strEmail.find("@.");
y=strEmail.find(".@");
if( x>0 || y>0 )
{
return false;
}
return true;
}
return false;
}
  测试结果:
  IsValidEmail(_T("abcd@hotmail.com")); 返回TRUE
  IsValidEmail(_T("_abcd@hotmail.com")); 返回FALSE
  IsValidEmail(_T("a.b.c.@abc.com")); 返回FALSE
  IsValidEmail(_T("a.b.c@abc.com")); 返回TRUE
  IsValidEmail(_T("abcd@hotmail.com.cn")); 返回TRUE
  IsValidEmail(_T("abcd@hotmail.com.cn.fj")); 返回FALSE
  IsValidEmail(_T(9abcd@hotmail.com.cn)); 返回FALSE

C++ 判断是否为邮箱格式的更多相关文章

  1. iOS之判断手机号码、邮箱格式是否正确

    //判断手机号码格式是否正确 + (BOOL)valiMobile:(NSString *)mobile{     mobile = [mobile stringByReplacingOccurren ...

  2. [Swift通天遁地]七、数据与安全-(14)使用单元测试进行邮箱格式的验证

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  3. jquery判断邮箱格式问题

    方法一: var search_str = /^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/; var email_val = $("#Email").val(); ...

  4. ORACLE中使用SQL的正则表达式判断邮箱格式

    在数据库中,有时需要判断字符串是否是一个或者多个邮箱格式,可以使用如下语句判断: ) FROM dual WHERE regexp_like(v_mail,'^\w+((-\w+)|(\.\w+))* ...

  5. iOS开发——判断邮箱格式

    //判断邮箱格式 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@ ...

  6. JS判断邮箱格式

    function check(){    var strText=$("#email").val();    var strReg=/^\w+((-\w+)|(\.\w+))*\@ ...

  7. js判断手机邮箱格式(正则)

    function fun() { var realname = document.getElementById("realname"); var telephone = docum ...

  8. 在js中实现邮箱格式的验证

    在js中实现邮箱格式的验证 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><htm ...

  9. js正则表达式:验证邮箱格式、密码复杂度、手机号码、QQ号码

    直接上代码             Java   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...

随机推荐

  1. java_函数式编程

    创建函数式接口: //定义了一个函数式接口 @FunctionalInterface public interface BlogTest { /* 函数式接口: 概念:有且仅有一个抽象方法的接口 接口 ...

  2. php代码post请求

    <?php /** * 发送post请求 * @param string $url 请求地址 * @param array $post_data post键值对数据 * @return stri ...

  3. JavaScript 数组函数 map()

    JavaScript 数组函数 map() 学习心得 map()函数是一个数组函数: 它对数组每个原素进行操作,不对空数组进行操作: 不改变原本的数组,返回新数组: arr.map(function( ...

  4. delphi 流程单打印

    1.添加声明 f_count1: double; 2.得到拆分页数量 // Modified by 884 2018-04-20 14:50:18 AM0057 with aqTpCount do b ...

  5. sql (9) COUNT

    COUNT() 函数返回匹配指定条件的行数.语法SQL COUNT(column_name) 语法COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):新建表 Stude ...

  6. yii2中使用定义在 params.php文件中的配置

    yii2 使用 配置文件中在 params 的配置, 可以用 Yii::$app->params['key1']形式访问 参考 yii can't access Yii::$app->pa ...

  7. AM8互联设置方法

    Am8互联设置 这个只需要部署在一个总部的AM8的 Oiorg所在机器上就可以 环境: Windows 2012 or windows 2008,IIS ,.Net4 AM8 数据库必须升级到:201 ...

  8. 5.从物理层到MAC层

    第一层(物理层)     如何用两台电脑构成最小的局域网(LAN)?     网线的水晶头1.2和3.6脚分别起着收.发信号的作用,随意只要将水晶头做交叉线1-3.2-6交叉法,然后连接两台电脑.除了 ...

  9. ERROR 1872

    解决 > start slave; ERROR (HY000): Slave failed to initialize relay log info structure from the rep ...

  10. 最大流——hdu4292(类似poj3281 带间隔的流)

    #include<bits/stdc++.h> using namespace std; #define maxn 100005 #define inf 0x3f3f3f3f ]; int ...