如何检查用户是否输入了带有电子邮件格式的字符串
E.g。 Ted@Ted.com
我想检查是否有“@”和“。”
除了使用ispunct函数
答案 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