2

私は電子メールIDを検証するためにこのコードを使用しました.私はそれを解決する方法を知りません.

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: 'Validate': オーバーロードされたメンバー関数 'int (class CString)' が 'CMailDlg' に見つかりません

「CMailDlg」の宣言を参照してください

エラー C2059: 構文エラー: '番号の接尾辞が正しくありません'

エラー C2018: 不明な文字 '0x40'

エラー C2017: 不正なエスケープ シーケンス

4

1 に答える 1

1

正規表現文字列を引用符で囲み、\ をエスケープする必要があります。C++ には正規表現のネイティブ サポートがありません。たとえば、Perl のように、文字列を使用して実装されています。\ は C++ のエスケープ文字であり、改行などを文字列に含めるために使用されます。文字列に実際の \ が必要な場合は、2 倍にする必要があります。

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