C++ 如何在MFC中验证电子邮件id?

C++ 如何在MFC中验证电子邮件id?,c++,regex,mfc,email-validation,email-address,C++,Regex,Mfc,Email Validation,Email Address,我使用此代码验证电子邮件id,我得到了一些错误,我不知道如何解决它,,,我是新的MFC,,如果我很傻,请原谅我 BOOL CMailDlg::Validate(CString m_sFrom) { m_sFrom = NulltoString(m_sFrom); CString strRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; Regex re = new Regex(strRegex); if (

我使用此代码验证电子邮件id,我得到了一些错误,我不知道如何解决它,,,我是新的MFC,,如果我很傻,请原谅我

BOOL CMailDlg::Validate(CString m_sFrom)
{
  m_sFrom  = NulltoString(m_sFrom);
  CString strRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;  

  Regex re = new Regex(strRegex);
  if (re.IsMatch(m_sFrom))
    return (true);
  else
    return (false);
}
错误:

错误C2511:“验证”:在“CMailDlg”中找不到重载的成员函数“int(类CString)”

参见“CMailDlg”声明

错误C2059:语法错误:“数字后缀错误”

错误C2018:未知字符“0x40”

错误C2017:非法转义序列


您需要在引号中包含正则表达式字符串并转义\。C++没有对ReEX的本地支持,如您所说的,Perl,它是使用字符串实现的。是C++的转义字符,用于将新的行包含在字符串中,因此如果您希望字符串中包含一个实际值,则必须将其加倍。

CString strRegex = "/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/";

嗯。为什么要标记此
vb6
?MFC的哪一部分与VB6有关?是正确执行此操作所需的正则表达式。使用正则表达式验证电子邮件地址异常困难,因此肯定不是正确的方法。达成类似的共识。电子邮件地址中除了字母数字和
@
符号外,还有很多字符是允许的。正则表达式真的是用
/
-es包装的吗?我不这么认为。恐怕我还没有使用有问题的正则表达式库,所以我不能说,但是它将出现在Perl和Vim中,这两个地方我通常使用正则表达式。