Expressões Regulares: Use!

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 – Aplicando

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

2 thoughts on “Expressões Regulares: Use!

    1. 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.

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: