quinta-feira, 20 de outubro de 2011

Expressões regulares de forma simples

Boa tarde amigos e amigas tudo bem? Hoje vou mudar um pouco o assunto, vou falar de expressões regulares!
EXPRESSÕES REGULARES


Ta mas oq são as expressão regulares? Pq e onde são uteis? Vou realmente usar essa trollagem?


Vamos as respostas uma a uma. Expressão regular é um meio preciso de se fazer busca em determinadas posições de uma string (texto) podendo assim criar diversar funcionalidades como validar uma entrada de dado, verificar se um arquivo é de uma extensão e tantas outras funcionalidades.


Ou mais ‘técnicamente falando’ uma expressão regular, define um padrão a ser usado para procurar ou substituir palavras ou grupos de palavras. É um meio preciso de se fazer buscas de determinadas porções de texto.
Por exemplo, se o conjunto de palavras for {asa, carro, jardim, ovos, terra} e a expressão regular buscar por um padrão rr, obterá as palavras carro e terra.
Existem diferentes formatos para definir-se expressões regulares, porém com algumas noções gerais é possível entender boa parte das expressões.



Como desenvolvedor você sempre vai precisar de uma expressão regular, seja para validar uma entrada de dado, seja para ler um arquivo ou ainda montar uma URL... ou seja saber expressão regular esta para o desenvolvimento assim como chutar esta para o futebol, portanto expressão regular É importante, mas como entender essas coisas de forma simples? O objetivo dessa série de posts é esse...

Vamos voltar no tempo em que jogavamos Alex Kidd no Master System se lembra? Pois é algumas vezes vc olhava para a fase em que estava e pensava de inicio que era muito dificil...

Mas com alguns segundos analisando bem vc percebia que nem era tão dificil assim, era só raciocinar um pouco...

Pois é meu amigo se vc já fez isso talvez foi ai que você aprendeu que seria um programador. As expressões regulares são iguais esse jogo sabe pq? Presta atenção nisso aqui:


^[a-z]{4,20}$



Aparentemente isso é o lobo mal mas não é a verdade veja bem;
o operador ^ (chapéuzinho rsrs) obriga iniciar com algo que vem adiante dele que nesse caso é [a-z] a regra fica dentro dos colchetes ou seja nesse caso ele aceita apenas letras de a até o z que são minusculas, adiante é definido a chave com o número 4 e o 20 {4,20} e isso significa que para o conteúdo obrigatório a quantidade de caracteres deve ser de no mínimo 4 e no máximo 20 e por fim um $ que define que o valor deve terminar com essa regra também olha que simples não é?

Baseado nessa dica veja 8 expressões regulares para o PHP consideradas uteis pelo site Devolio


Validar nome de usuário

Essa regra é para permitir usuários com nome de 4 a 28 caracteres, alfanuméricos e acentuados:

$string = "userNaME4234432_";
if (preg_match('/^[a-z\d_]{4,28}$/i', $string)) {
    echo "example 1 successful.";
}

Números telefônicos

Essa regra é para validar números de telefone, e os números devem ser escritos da seguinte maneira (###)###-####:

$string = "(032)555-5555";
if (preg_match('/^(\(?[2-9]{1}[0-9]{2}\)?|[0-9]{3,3}[-. ]?)[ ][0-9]{3,3}[-. ]?[0-9]{4,4}$/', $string)) {
echo "example 2 successful.";
}

Endereços de e-mail

A regra para validar e-mails é a seguinte:

$string = "first.last@domain.co.uk";
if (preg_match(
'/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',
$string)) {
echo "example 3 successful.";
}

Códigos Postais

Permie utilizar números no seguinte formato: xxxxx e xxxxx-xxxx

$string = "55324-4324";
if (preg_match('/^[0-9]{5,5}([- ]?[0-9]{4,4})?$/', $string)) {
echo "example 4 successful.";
}

Endereços IP

Não é necessário efetuar PING ou qualquer coisa do tipo, essa regra é válida para verificar se os IPs foram escritos corretamente, como esse exemplo 255.255.255.0:

$string = "255.255.255.0";
if (preg_match(
'^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$',
$string)) {
echo "example 5 successful.";
}

Cores Hexadecimais

Você também pode verificar valores hexadecimais em suas 2 formas, a normal e a abreviada: (#333, 333, #333333 o 333333) com o símbolo # opcional

$string = "#666666";
if (preg_match('/^#(?:(?:[a-f\d]{3}){1,2})$/i', $string)) {
echo "example 6 successful.";
}

Buscar comentários multi-linha

Uma forma simples de buscar e eliminar comentários multi-linha em PHP, CSS e outras linguagens:

$string = "/* commmmment */";
if (preg_match('/^[(/*)+.+(*/)]$/', $string)) {
echo "example 7 successful.";
}

Datas

Um formato de data típico MM/DD/YYYY e sua validação é a seguinte:

$string = "10/15/2007";
if (preg_match('/^\d{1,2}\/\d{1,2}\/\d{4}$/', $string)) {
echo "example 8 successful.";
}


Bem amigos, se você tem mais interesse em ER recomendo o livro de Aurélio Marinho que aborda Expressões regulares de forma divertida.



Valeu

Um comentário:

  1. Caro Paulo, seu bom humor e domínio em paradigmas de desenvolvimento é impressionante, sigo seus posts e uns tempos e é muito util para meu trabalho! Obrigado por compartilhar seus sólidos conhecimentos de um jeito simples

    ResponderExcluir