• C++ 判断是否为邮箱格式


    总结了一下合法的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

  • 相关阅读:
    中国移动全球通寻宝第四期攻略
    推荐一个奥运门票交流的网站!
    国务院发出通知明确2008年部分节假日放假安排
    [转]开发人员如何谈加薪,抛砖引玉,欢迎大家各抒己见。
    中级.NET开发人员应该知道些什么?
    linux系统管理 系统安全及应用
    Linux10 进程 定时任务 僵尸进程
    shell脚本练习
    虚拟机和liunx系统的装机
    Linux三剑客awk的应用对比案例详解
  • 原文地址:https://www.cnblogs.com/blogpro/p/11446001.html
Copyright © 2020-2023  润新知