Validação de emails em C/C++
Publicado por César (última atualização em 28/02/2019)
[ Hits: 3.585 ]
Estudando regex para validação de datas fiquei interessado em saber como validar emails usando a mesma, então elaborei um script em C++ usando orientação a objetos, e outro em c.
Para compilar o script email.cxx basta fazer:
$ g++ -oemail email.cxx -std=c++11
Para compilar o script email.c basta fazer:
$ gcc -oemail email.c
Espero que o mesmo seja útil.
#include <regex>
#include <iostream>
/*!
*
* @begin @section terms_of_use Terms of Use
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3.0+ of the License, or (at your option) any later version.
*
* @end @section terms_of_use Terms of Use
*
* @begin @section author Author
*
* @file email.cxx
* @version 0.1
* @brief validação de emails em c++ usando regex.
* @author Jean Zonta
* @pseudonym wiki.anon
* @Copyright/modification (C) 2018 Jean Zonta.
*
* @end @section author Author
*
*/
struct email
{
email(const std::string& mail): _email(mail){}
virtual ~email(){ if(!_email.empty())_email.clear(); }
bool isEmail()
{
//valida todos os dominios e servidores de emails
//const std::regex pattern("^([a-zA-Z0-9._]+@[a-z]+([.][a-z]{2,4}){1,2})$");
//const std::regex pattern("^(\\w+)(\\.|_)?(\\w*)@(\\w+)(\\.(\\w+))?(\\.(\\w+))$");
//valida somente servidores @{hotmail,terra,yahoo,uol,bol} no dominio .com.br e servidor gmail no dominio .com
const std::regex pattern("^([a-zA-Z0-9._]+@((hotmail|terra|yahoo|uol|bol)[.](com[.]br))?(gmail[.]com)?)$");
return std::regex_match(_email, pattern);
}
void print()
{
std::cout << "\n\tEmail: "+_email+(isEmail()?" is Valid\n":" is Invalid\n");
}
private:
std::string _email;
};
int main()
{
std::string emails[16] = {
"regex_cpp@net.br","reg_ex.cpp@org.nz",
"reg_ex.cpp@net.org.br","regex_cpp@terra.com.br.net",
"regex_cpp@hotmail.com","regex_cpp@hotmail.com.br",
"regex_cpp@yahoo.com","regex_cpp@yahoo.com.br",
"regex_cpp@gmail.com","reg_ex.cpp@gmail.com.br",
"regex_cpp@uol.com","regex_cpp@uol.com.br",
"regex.cpp@bol.com","regex_cpp@bol.com.br",
"regex_email@terra.com","reGe.x_email@terra.com.br"
};
for(int i = 0; i < 16; i++)
{
email(emails[i]).print();
}
/*
char input[30]={0};
do{
std::cout << "\n\tDigite um email: ";
std::cin >> input;
email(input).print();
}while(!email(input).isEmail());
*/
std::cout << "\n";
return 0;
}
Fila com Lista Encadeada Descritor/Cabeçalho
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Programa fora de escala na tela do pc (1)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)
O programa assinador digital (1)









