quarta-feira, 19 de junho de 2013

Consistência de campo email com expressões regulares em PHP

A consistência dos campos de email dos formulários em linguagem HTML, de forma minimalista, pode ser muito trabalhosa se utilizarmos a famigerada função de substring.

Expressões Regulares

Para resolver o problema da forma correta, vamos utilizar as expressões regulares.

Primeira solução:

Prevê as formas que o email pode ter de forma discreta:

x@y.z, x@y.w.z, x.y@w.z ou x.y@k.w.z

A expressão regular equivalente seria:

 /^([\w]+|[\w]+\.[\w]+)@([\w]+\.[\w]+|[\w]+\.[\w]+\.[\w]+)$/

Segunda solução:

Esta é mais elegante e utiliza o princípio das máquinas finitas:

/^(\.?[\w]+){0,}@(\.?[\w]+){0,}$/

As expressões à direita e à esquerda do sinal característico "@" do formato de email são iguais, e podem ser esquematizadas da seguinte forma:

(\.?[\w]+){0,}

Os parênteses estabelecem um grupo lógico.

(\.?[\w]+){0,}

O ponto (precedido de "\" para especificar que é o caracter em si, e não uma referência simbólica da sintaxe das Expressões Regulares) e seguido do sinal de interrogação significa que ele pode ou não aparecer. Isto porque o primeiro grupo de caracteres do endereço de email não possui um ponto que o preceda.

(\.?[\w]+)

.O símbolo de qualquer letra, seguido do caracter "+" indica que o grupo lógico será uma sequência de caracteres (sem espaços).

(\.?[\w]+)

A expressão completa entre parênteses significa: Um grupo de caracteres sem espaços que pode ou não ser precedido de ponto (".").

(\.?[\w]+){0,}

O complemento {0,} indica o número de ocorrências, no caso 0 ou mais.







Nenhum comentário:

Postar um comentário