Escolas e Faculdades QI Demétrius Loblein e Carlos Henrique EXPRESSÕES REGULARES
Uma expressão regular, na Informática, 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. Conceito As Expressões Regulares (ER, Ereg ou RegEx para os mais íntimos), então, são um método rápido e simples de manipulação e combinação avançada de strings. Vamos partir do princípio! Uma expressão regular é essencialmente um padrão. É com base nesse padrão que a expressão em questão será avaliada. Primeiro vamos aprender a sintaxe das expressões para depois aprender como fazê-las funcionar Utilizando expressões regulares no PHP Agora que já aprendemos essa porrada de regras, temos que saber como aplicá-las! (Lembrando que este é o método POSIX. Caso você vá utilizar ER em outra linguagem, pode ter de fazer algumas adaptações) ereg() e eregi() Vou ensinar apenas essas duas Caso você queira se aprofundar mais, olhe no manual do php no capitulo de expressões regulares! :) int ereg(string padrão, string fonte [, array registro]); Esta função retorna TRUE se o padrão dado for encontrado na fonte e FALSE caso contrário. 1 2 3 4 5 6 7 8 9 10 11 12 13 <?php $email = 'mario@gmail.com'; $padrao = "^(.+)@(.+).(.+)$"; if (ereg($padrao,$mail)) { print 'Seu email passou na validacao'; else { print 'Seu email nao passou na validacao';?>
O que temos? A string dada deverá começar com algum caractere qualquer em qualquer quantidade, seguido de uma arroba, seguido de mais qualquer caractere em qualquer quantidade, seguido de um ponto literal, seguido de mais qualquer sequência de caracteres, que deverão então finalizar a string. A função eregi() se comporta de modo semelhante, porém não diferencia maiúsculas e minúsculas. Conclusão O mundo das expressões regulares é muito grande e abrangente. Com certeza não vai ser com essa passada de olho que você vai se tornar um expert em ER, mas serve pra dar uma noção do que elas são e para que servem! Expressões regulares no PHP Atualmente o PHP oferece duas maneiras distintas de trabalhar com expressões regulares, POSIX e PCRE, cada alternativa conta com um conjunto de funções, confira. Funções POSIX Objetivo ereg_replace Busca e substitui o que casar com a expressão. ereg Verifica se uma string casa com a expressão. eregi_replace Igual a ereg_replace, porém é case-insensitive. eregi Igual a ereg, porém é case-insensitive. split Divide uma string utilizando uma expressão. spliti Igual a split, porém é case-insensitive. sql_regcase Cria uma expressão regular para uma determinada entrada. Funções PCRE Objetivo preg_filter Busca e substitui, retornando as opções do array que casarem com a
Funções PCRE Objetivo expressão. preg_grep Retorna as opções de um array que casarem com a expressão. preg_last_error Retorna o código de erro da última expressão executada. preg_match_all Retorna as ocorrências de uma string que casarem com a expressão. preg_match Verifica se uma string casa com a expressão. preg_quote Adiciona escape em caracteres da expressão. preg_replace_callback Busca e executa um callback nas opções que casarem com a expressão. preg_replace Busca e substitui, retornando todas as opções. preg_split Divide uma string utilizando uma expressão. 8 expressões regulares muito úteis na hora de se programar em PHP, muitas delas utilizadas para validar e-mail, nomes de usuário, números telefônicos, e-mails entre outras. 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.";