整理总结了下合法email地址格式如下(只是大致上判断希望大家能不断充实或有更好想法):
1. 首必须用字母而且其它只能用26个大小写字母、0~9及_-.@符号
2. 必须包含个并且只有个符号“@”
3. @后必须包含至少个至多 3个符号“.”
4. 第个不得是“@”或者“.”(第步已检查过了)
5. 不允许出现“@.”或者.@
6. 结尾不得是“@”或者“.”
现在就把本人写代码发布出来给大家做参考以下代码在VS2005(UNICODE)中测试通过应该来说基本满足大部分验证需求:
//检查有效性包括26个大小写字母、0~9及_-.@符号
BOOL IsValidChar(char ch)
{
( (ch>=97) && (ch<=122) ) //26个小写字母
TRUE;
( (ch>=65) && (ch<=90) ) //26个大写字母
TRUE;
((ch>=48) && (ch<=57)) //0~9
TRUE;
( ch95 || ch45 || ch46 || ch64 ) //_-.@
TRUE;
FALSE;
}
//EMAIL有效性验证
BOOL IsValidEmail(CString strEmail)
{
(strEmail.GetLength<5) //[email protected]
FALSE;
char ch = strEmail[0];
//1. 首必须用字母
( ((ch>=97) && (ch<=122)) || ((ch>=65) && (ch<=90)) )
{
atCount =0;
atPos = 0;
dotCount = 0;
for( i=1;i<strEmail.GetLength;i) //0已经判断过了从1开始
{
ch = strEmail[i];
(IsValidChar(ch))
{
(ch64) //"@"
{
atCount ;
atPos = i;
}
( (atCount>0) && (ch46) )//@符号后"."号
dotCount ;
}
FALSE;
}
//6. 结尾不得是“@”或者“.”
( ch 46 )
FALSE;
//2. 必须包含个并且只有个符号“@”
//3. @后必须包含至少个至多 3个符号“.”
( (atCount!=1) || (dotCount<1) || (dotCount>3) )
FALSE;
//5. 不允许出现“@.”或者.@
( strEmail.Find(_T("@."))>0 || strEmail.Find(_T(".@"))>0 )
FALSE;
TRUE;
}
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
最新评论