请教个在MFC中使用正则表达式判断Email格式是否正确的问题。

stoones 2012-08-18 12:15:57
我在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})?$
但是问题是,前者只能识别非数字的邮箱地址,如XXX@gmail.com能正确识别,但是XXX@163.com却不能正确识别,这个从表达式本身能跟理解。但是表达式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。
请高手帮忙指点一下,是不是我的用法有误。谢谢!
...全文
297 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋晟 2012-08-18
  • 打赏
  • 举报
回复
用户名@域名.中国这样的邮箱呢?没有简单正则表达式可以匹配中文的……
傻X 2012-08-18
  • 打赏
  • 举报
回复
正则的问题,很少有人回答,帮顶

期待高手出现

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧