O Mantra das REGEX – As 8 Expressões Regulares que precisamos saber.
Posted: January 29th, 2008 | Author: Felipe Ribeiro | Filed under: apache, desenvolvimento de software, php, regex | Tags: apache, desenvolvimento de software, php, regex | No Comments »
Você tem medo de REGEX!? Eu também!
Nos últimos tempos tenho lidado bastante com REGEX editando regras do Apache mod_rewrite e com a classe que publiquei no PHPClasses, a SiteMapGenerator Tabajara, que se propõe a gerar um mapa do site em xml no padrão estabelecido pelo Google para melhorar a indexação.
Mas depois de tirar onda da galera do Perl no post anterior, vou exaltar a importância que expressões regulares têm nas nossas validações, e para isso vou citar as 8 expressões regulares que todo programador Web deveria saber (exemplos em PHP, mas são válidos para qualquer linguagem com suporte a PCRE).
Validação de nomes de usuário
4 a 28 caracteres alfanuméricos e underscores:
$string = "userNaME4234432_";
if (preg_match('/^[a-z\d_]{4,28}$/i', $string)) {
echo "exemplo 1 ok.";
}
Validação de números de telefone
(##) ####-#### ou ##-####-####
$string = "(32) 5555-5555";
if (preg_match('/^(\(?[0-9]{2}\)?|[-. ]?)[ ][0-9]{4}[-. ]?[0-9]{4}$/', $string)) {
echo "exemplo 2 ok.";
}
Endereços de e-mail
foo@bar.foo
$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 "examplo 3 ok.";
}
CEPs
#####-### ou ########
$string = "55324-432";
if (preg_match('/^[0-9]{5,5}([- ]?[0-9]{4})?$/', $string)) {
echo "exemplo 4 ok.";
}
Endereços IP
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 "exemplo 5 ok.";
}
Código de cores RGB em Hexadecimal
#FFFFFF, #FFF, FFF, FFFFFF
$string = "#666666";
if (preg_match('/^#(?:(?:[a-f\d]{3}){1,2})$/i', $string)) {
echo "exemplo 6 ok.";
}
Comentários de múltiplas linhas
/* Lorem
Ipsun
dolor*/
$string = "/* commmmment */";
if (preg_match('/^[(/*)+.+(*/)]$/', $string)) {
echo "exemplo 7 ok.";
}
Datas
DD/MM/YYYY ou MM/DD/YYYY
$string = "30/01/2008";
if (preg_match('/^\d{1,2}\/\d{1,2}\/\d{4}$/', $string)) {
echo "exemplo 8 successful.";
}
Esses exemplos foram retirados do site Devolio[1] , porém algumas expressões eu alterei para ajustar aos padrões brasileiros de telefone e cep. Se por acaso fiz alguma besteira, peço que um REGEXPERT comente e corrija! E no segundo link[2] um validador de expressões regulares.
[1] 8 Practical PHP Regular Expressions – Devolio
[2] Perl Compatible Regular Expression Tester












