2

我使用此代码验证电子邮件 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:非法转义序列

4

1 回答 1

1

您需要将正则表达式字符串包含在引号中并转义 \. C++ 没有对正则表达式的本机支持,因为您可能会发现 Perl,它是使用字符串实现的。\ 是 C++ 转义字符,用于将新行之类的内容包含到字符串中,因此,如果您想要在字符串中包含实际的 \,则必须将其加倍。

CString strRegex = "/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/";
于 2011-05-09T08:37:33.380 回答