我在MFC项目中需要判断Email是否正确,使用ATL自带的正则表达式支持,参看了网上的一些实例,找到了两个表达式:
表达式1:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
表达式2:^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?$
但是问题是,前者只能识别非数字的邮箱地址,如[email protected]能正确识别,但是[email protected]却不能正确识别,这个从表达式本身能跟理解。但是表达式2从表达式本身看没用问题,应该能正确工作,可是我得到的结果确实错误的。
代码如下:        REParseError status = reUrl.Parse(strRegex); if (REPARSE_ERROR_OK != status)
{ return 0;
} CAtlREMatchContext<> mcUrl;
if (reUrl.Match(strEmail,&mcUrl))
{
MessageBox(_T("OK"), _T("res"), MB_OK);
return 0;
}使用表达式2,调用Match()函数返回值为FALSE。
请高手帮忙指点一下,是不是我的用法有误。谢谢!