-1

ユーザーがメール形式の文字列を入力したかどうかを確認するにはどうすればよいですか?

例えばTed@Ted.com

「@」と「。」があるか確認したいのですが。

ispunct関数を使用する以外

4

2 に答える 2

2

使用できますstd::string::find_first_of

// Check that the string contains at least one '@' and a '.'
// after it. This will have lots of false negatives (but no
// false negative), like "a@b@c.com" or "toto@com.".
bool is_email(std::string const& address) {
    size_t at_index = address.find_first_of('@', 0);
    return at_index != std::string::npos 
        && address.find_first_of('.', at_index) != std::string::npos;
}

ただし、電子メール アドレスの解析に関する通常の免責事項: これは非常に複雑なトピックです。有効な電子メール アドレスは奇妙な獣だからです。有効なアドレスの仕様については、RFC 5322を確認してください。

于 2013-02-16T18:00:37.317 に答える
1

正規表現を使用して、に対して評価できます

^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$

これは、ほぼすべての正規の電子メール アドレスに一致します。この質問を参照してください

C++11 を使用している場合は を使用できますstd::regex。それ以外の場合は、次のようなサードパーティの正規表現パーサーを使用する必要があります。boost::regex

于 2013-02-16T18:02:07.370 に答える