Hoje vou falar sobre um assunto que é de suma importância para qualquer programador , expressões regulares. O poder e a facilidade que é proporcionada aos programadores adeptos deste conceito são realmente enormes.
Para quem ainda não faz idéia do que eu estou falando vou mostrar um exemplo para vocês:
[php]
if(! ereg(”^([0-9a-zA-Z]+)([._-]([0-9a-zA-Z]+))*[@]([0-9a-zA-Z]+)([._-]([0-9a-zA-Z]+))*[.]([a-zA-Z]){2,3}([0-9a-zA-Z])?$”, $input_email ) ) {
echo "Caracteres Inválidos no campo de e-mail!!!";
}
[/php]
Estão vendo este grupo de caracteres aparamente mente misturados e sem lógica alguma, certo?
Errado! claro que tem lógica!
A história das expressões regulares começou no ano de 1943 e só foi apresentada ao computador 25 anos depois em 1968 em um algoritmo de busca integrado no editor de textos, na época chamado “qed”.
Os pais das expressões regulares foram dois neurologistas que na época publicaram um estudo que teorizava o funcionamento dos nossos neurônios. Alguns anos depois um matemático (não me pergunte quem) descreveu algebricamente os modelos deste estudo usando símbolos que por sua vez foram chamados de grupos-regulares (regular sets) e baseado nestas notações simbólicas foi que deu origem as expressões regulares.
Como puderam notar, as expressões regulares são muito antigas e vem sendo muito utilizado para criar implementações “farejadoras”, o uso das expressões regulares nada mais é do que implementar regras de coletação e verificação de sintaxe de textos.
O exemplo que eu dei para verificação do e-mail de um visitante é bem claro em relação a isso, ele verifica se o e-mail digitado pelo visitante possui uma sintaxe válida.
Para o seu estudo e compreendimento existe um e-book publicado pelo Aurélio Marinho Jargas na internet que foi aonde eu aprendi tudo que sei no que se trata de expressões regulares.
Facilitando o Estudo
Na internet existe várias ferramentas que te ajudam na fixação e treinamento dos conceitos aprendidos neste livro, uma destas, é o Regex Tester online, você escreve um texto simples, escreve a regra e o editor vai colorindo as áreas afetadas por sua expressão regular no seu texto.
Guia de Links Uteis
- Expressões regulares, por Guido Socher
- Trabalho de FMA 215 – Expressões Regulares, por Sergio Scarano Jr
- Expressões Regulares e Gramáticas Regulares, por Prof. A M Palazzo
- Expressões Regulares e Linguagens Regulares, por Profa. Rosália Rodrigues
- Expressões Regulares – Apresentação em Slides, por joão Lyma.
Expressões Regulares – Aplicando
- Expressões Regulares na Linguagem C, por Thobias Salazar Trevisan
- Expressões Regulares em C – Linux Gazette, traduzido por Fabio Utzig
- Documentação online sobre Expressões Regulares em Perl, por Iuri Gomes Diniz
- Expressões Regulares em Java – java.util.regex, por Paulo Silveira
- Expressões Regulares com Java, por Lucas de Castro
- PHP – Validação e exibição de CEPs, por Klaus Roberto de Paiva
- PHP – Utilizando regex para validação de compos de formulários, por Erika Focke
- Expressões Regulares em PHP #1
- Expressões Regulares em PHP #2, por Roberto Bertó
- Validação de Formulários HTML com Java Script, por Márcio d’Ávila
- JavaScript – Expressões Regulares, por Manoel M. Alves S. Jr
- Expressões Regulares em JavaScript, por Felipe
- Expressões Regulares no Ruby, por Lucas Húngaro
Nos links acima você encontra informações suficientes para em pouco tempo sair criando suas próprias expressões.
Concluindo
Insisto para que se você ainda não sabe criar suas expressões regulares, por favor, leia o e-book que apresentei a vocês, vocês não fazem idéia do quanto as expressões regulares podem facilitar a vida de um programador. Recentemente na empresa na qual trabalho um programador criou uma rotina que tinha aproximadamente 15 linhas de código, vários parsers, loops e funções desnecessárias somente para verificar se o campo foi preenchido com 12 números 1, 2, 3, 4, 5, 6, 7, 8, 9, 0. ou seja, ele criou uma rotina que varria o campo cpf e verificava se os 12 números digitados eram repetidos por ex: 111111111111, 222222222222 … 999999999999.
De 12-15 linhas implementadas em JavaScript a solução Regex foi:
[javascript]
var Expressao = /([0]{12}|[1]{12}|[2]{12}|[3]{12}|[4]{12}|[5]{12}|[6]{12}|[7]{12}|[8]{12}|[9]{12}|)/
if(campoCpf.test(Expressao)) return false;
[/javascript]
Viu? Poupa tempo e neurônios. Uma implementação de 12-15 linhas virar apenas duas.
Objetivo deste post não é ensina-los Expressões regulares e sim tentar mostrar para vocês a importância da aprendizagem do mesmo para tornar você um desenvolvedor muito mais produtivo.
Espero ter contribuído!
[]’s
Um jeito mais fácil ainda!
if( campoCpf.test(/([0-9]{12,}/) ) return false;
LikeLike
A sua solução não age de acordo com o problema, Bruno. A sua expressão casa com qualquer numero que tiver 12 ou mais digitos. A proposta não era essa.
A proposta era casar somente com numeros 1111111111111,2222222222222 etc.
LikeLike