用VC验证EMAIL有效性
http://www.itjxue.com 2015-07-17 01:18 来源:未知 点击次数:
总结了一下合法的email地址格式如下:
1. 首字符必须用字母,而且其它的字符只能用26个大小写字母、0~9及_-.@符号
2. 必须包含一个并且只有一个符号“@”
3. @后必须包含至少一个至多三个符号“.”
4. 第一个字符不得是“@”或者“.”(第一步已检查过了)
5. 不允许出现“@.”或者.@
6. 结尾不得是字符“@”或者“.”
现在就把本人写的代码发布出来给大家做参考。以下代码在VS2005(UNICODE)中测试通过,应该来说基本满足大部分的验证需求:
//检查字符的有效性,包括26个大小写字母、0~9及_-.@符号
BOOL 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;
}
//EMAIL有效性验证
BOOL IsValidEmail(CString strEmail)
{
if(strEmail.GetLength()<5) //a@b.c
return FALSE;
char ch = strEmail[0];
//1. 首字符必须用字母
if( ((ch>=97) && (ch<=122)) || ((ch>=65) && (ch<=90)) )
{
int atCount =0;
int atPos = 0;
int dotCount = 0;
for(int i=1;i<strEmail.GetLength();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. 不允许出现“@.”或者.@
if( strEmail.Find(_T("@."))>0 || strEmail.Find(_T(".@"))>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
(责任编辑:IT教学网)
上一篇:没有了