如何检查用户输入字符串的电子邮件格式

时间:2013-02-16 17:57:46

标签: c++

如何检查用户是否输入了带有电子邮件格式的字符串

E.g。 Ted@Ted.com

我想检查是否有“@”和“。”

除了使用ispunct函数

2 个答案:

答案 0 :(得分: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以了解什么是有效地址。

答案 1 :(得分:1)

使用正则表达式,您可以评估

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

匹配几乎所有合法电子邮件地址。见this question

如果你正在使用C ++ 11,你可以使用std::regex,否则你将不得不使用第三方正则表达式解析器,例如boost::regex