Validação de emails em C/C++
Publicado por César (última atualização em 28/02/2019)
[ Hits: 3.298 ]
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; }
função de inserção em uma Arvore
Mini Analisador Léxico que conta palavras numa string
Automato Finito Determinístico
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
estou com chromebook legalzinho. (2)
Estou com sede em aprender sobre o nosso querido Linux. (1)
big linux sem audio como resolver (2)
Como faz para dar um update-grub por shell script [RESOLVIDO] (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta