Expressão Regular com PHP

6 11 2007

Expressão regular é uma coisa que depende muito da engine que às interpreta, por isso, resolvi postar aqui algumas expressões regulares muito comuns em validação de dados em PHP.

Se você não tem idéia do que seja uma expressão regular acesse o site do aurélio.

1 – Como testar uma expressão regular no php?

 $cep = "85915-230";

 $pattern = "/^[0-9]{5}-[0-9]{3}$/";

 if (preg_match($pattern, $cep)) {
   return true;
 } else {
   return false;
 }

2 – Exemplos de expressão regular
a – CEP

   $pattern = "/^[0-9]{5}-[0-9]{3}$/";

b – Data no formato d/m/Y exemplo: 01/01/2009

   $pattern = "/^(0[1-9]|[1-2][0-9]|3[0-1])[\/](0[1-9]|1[0-2])[\/](19|20)[0-9]{2}$/";

c – String com zero ou mais letras

   $pattern = "/^[a-zA-Z]*$/";

d – Nomes completos “feita pelo meu amigo Darlon”

   $pattern = "/^[a-zA-Z][a-zA-Z][a-zA-Z]* [a-zA-Z ]*$/";

e – Validação de hora

   $pattern = "/^([0-1][0-9]|[2][0-3]):[0-5][0-9]$/";

Se alguém tiver ai uma expressão regular que valide moedas posta ai !


Ações

Information

10 responses

25 04 2008
battisti

Expressão Regular para telefone do tipo (xx) xxxx-xxx
/^\(\d{2}\) \d{4}-\d{4}$/

18 08 2012
Paulo Linhares

acho que as versões recentes do PHP não aceitam mais os \d, \s, \w . Testei aqui com eles e só retorna false. Mas não tenho certeza, ainda não li o manual novo .

25 04 2008
battisti

uma página com vários exemplo e um testador de ER é esta aqui:
http://tools.lymas.com.br/regexp_br.php#

8 07 2008
battisti

Encontrei hoje dando uma olhada nos códigos do EVACMS (http://evacms.com.br/) estas expressões regulares.

$this->er[‘texto’] = “^\w+$”;
$this->er[‘branco’] = “^\s+$”;
$this->er[‘letras’] = “^[a-zA-Z]+$”;
$this->er[‘letras_numeros’] = “^[a-zA-Z0-9\s]+$”;
$this->er[‘sem_espaco’] = “^[a-zA-Z0-9]+$”;
$this->er[‘numeros’] = “^[0-9]+$”;
$this->er[‘numeros_inteiros’] = “^[0-9]+$”;
$this->er[‘letra_ou_numero’] = “^([a-zA-Z]|[0-9])$”;
$this->er[‘ponto_flutuante’] = “^((\d+(\.\d*)?)|((\d*\.)?\d+))$”;
$this->er[‘ponto_decimal’] = “^((\d+(\,\d*)?)|((\d*\,)?\d+))$”;
$this->er[‘ponto_decimal_2_casas’] = “^(\d+((,\d{1,2})|(\.\d{1,2}))?)$”;
$this->er[‘email’] = “^.+\@.+\..+$”;
$this->er[‘nao_nulo’] = “^[\s|\S]+$”;
$this->er[‘rg’] = “[0-9]\.[0-9]{3}\.[0-9]{3}\-\d”;
$this->er[‘cpf’] = “[0-9]\.[0-9]{3}\.[0-9]{3}\-\d”;
$this->er[‘data’] = “^([0-9]{2}\/[0-9]{2}\/[0-9]{4})$”;
$this->er[‘data_hora’] = “^([0-9]{2}\/[0-9]{2}\/[0-9]{4}\s[0-9]{2}:[0-9]{2})$”;
$this->er[‘cep’] = “^[0-9]{8}$”;

17 09 2008
battisti

$pattern = “/^[-+]?\d{1,3}(\.\d{3})*,\d{2}$/”;

30 06 2009
Adriano Meira

Olá Pessoal, encontrei este post falando de ER do PHP, e se possível me ajudem… é o seguinte, tenho uma variável que recebe um html como exemplo abaixo:

$conteudo = “João15/03/2009”;

Em seguida queria montar um Array sendo “separado” pelas “div´s”, daí pensei em usar a função “preg_match” com a seguinte Expressão regular:

$preg = “]*>(.*?)”;

Até cheguei a testa-la no link que ai em cima para testar expressão e deu certo, porém ao utiliza-la deu erro, se puderem me ajudar fica ai mais uma ER pro post.

Segue o código completo:

$conteudo = “João15/03/2009”;
$preg = “]*>(.*?)”;
preg_match($preg, $conteudo, $saida);
//Para ver oq ue vem no Array
var_dump($saida);

Muito obrigado pela atenção!

1 07 2009
battisti

bom como você quer manipular string html o jeito mais fácil eh usar um parser html php dom, segue o link de um cara que faz isso:

http://simplehtmldom.sourceforge.net/

espero que ajude

1 07 2009
Adriano Meira

Cara não consegui fazer o download do arquivo… vo testar em casa e lhe dou retorno… mesmo assim já valeu pela rápida resposta, muito obrigado!

21 01 2012
Maicon

Cara como eu posso pegar e compara se em um texto tem uma expressao regular de data. sendo que a string contem um texto com uma data?

Abraço!

23 01 2012
battisti

$this->er[‘data’] = “^([0-9]{2}\/[0-9]{2}\/[0-9]{4})$”; coloca * antes de depois se dentro da string tiver data ele vai dar um true.

Se vc tiver querendo na verdade extrair a data ai tem que usar o preg_match

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




%d blogueiros gostam disto: