【问题标题】:how to do the validation of email id in MFC?如何在 MFC 中验证电子邮件 ID?
【发布时间】:2011-08-21 12:24:10
【问题描述】:

我使用此代码验证电子邮件 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 (class CString)”

参见“CMailDlg”的声明

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

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

错误 C2017:非法转义序列

【问题讨论】:

  • 呃。你为什么要标记这个vb6? MFC 的哪一部分与 VB 6 有关系?
  • This 是您需要正确执行此操作的正则表达式。使用正则表达式验证电子邮件地址非常困难,因此绝对不是正确的方法。 The answers to this question 达成类似共识。除了字母数字和@ 符号之外,电子邮件地址中还允许使用许多字符。

标签: c++ regex mfc email-validation email-address


【解决方案1】:

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

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

【讨论】:

  • 正则表达式真的包裹在/-es 中吗?我不这么认为。
  • 恐怕我没有使用有问题的正则表达式库所以不能说,但是它会在 Perl 和 Vim 这两个地方我通常使用正则表达式。
猜你喜欢
  • 2011-03-27
  • 1970-01-01
  • 2017-01-06
  • 2017-02-27
  • 2011-01-10
  • 2023-03-19
  • 1970-01-01
  • 2014-08-20
  • 2018-09-16
相关资源
最近更新 更多