как сделать проверку идентификатора электронной почты в MFC?

Я использовал этот код для проверки идентификатора электронной почты, я получаю несколько ошибок, я не знаю, как это решить, я новичок в 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: «Проверить»: перегруженная функция-член «int (класс CString)» не найдена в «CMailDlg»

см. объявление 'CMailDlg'

ошибка C2059: синтаксическая ошибка: «неверный суффикс в номере»

ошибка C2018: неизвестный символ «0x40»

ошибка C2017: недопустимая управляющая последовательность


person lovesall    schedule 09.05.2011    source источник
comment
Эм. Почему вы отметили это vb6? Какая часть MFC имеет отношение к VB 6?   -  person Cody Gray    schedule 09.05.2011
comment
Это регулярное выражение, которое вам нужно для этого Правильно. Проверять адреса электронной почты с помощью регулярных выражений на удивление сложно, и поэтому это определенно не правильный способ. Ответы на этот вопрос достигают аналогичного консенсус. В адресе электронной почты разрешено использовать множество символов, помимо буквенно-цифровых и знака @.   -  person Cody Gray    schedule 09.05.2011


Ответы (1)


Вам нужно будет включить строку регулярного выражения в кавычки и экранировать \. С++ не имеет встроенной поддержки регулярных выражений, как вы могли бы обнаружить, скажем, в Perl, он реализован с использованием строки. \ является escape-символом С++ и используется для включения таких вещей, как новые строки в строки, поэтому, если вы хотите фактический \ в своей строке, вы должны удвоить его.

CString strRegex = "/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/";
person Charles Keepax    schedule 09.05.2011
comment
Действительно ли регулярное выражение завернуто в /-es? Я бы так не думал. - person Jan Hudec; 09.05.2011
comment
Боюсь, я не использовал рассматриваемую библиотеку регулярных выражений, поэтому не могу сказать, однако это было бы в Perl и Vim, которые являются двумя местами, где я обычно использую регулярные выражения. - person Charles Keepax; 09.05.2011