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