Facilidades para sua vida – Parte 4 – Expressões Regulares
by Michael Mafort on jan.26, 2009, under Facilidades para sua vida, PHP
Em javascript, php, java, action script 3 entre outras linguagens de programação temos suporte às expressões regulares, que auxiliam no serviço de tratamento de strings de várias formas, dentre elas:
- Validação de datas, emails, ip, url;
- Procura por termos expecificos;
- Procura por textos no inicio ou fim da string;
- Substituição de termos.
“Bem resumido, uma expressão regular é um método formal de se especificar um padrão de texto.
Mais detalhadamente, é uma composição de símbolos, caracteres com funções especiais, que, agrupados entre si e com caracteres literais, formam uma seqüência, uma expressão. Essa expressão é interpretada como uma regra, que indicará sucesso se uma entrada de dados qualquer casar com essa regra, ou seja, obedecer exatamente a todas as suas condições.” [http://guia-er.sourceforge.net/apresentando.html#1_3]
Nesta parte vamos aprender um pouco sobre o funcionamento e ver alguns exemplos de uso em javascript e php.
Caracteres e seus significados:
. (ponto) – Significa que pode ter entrada de qualquer caracter. A expressão /./ tanto em php quanto em javascript significa que pode-se dar entrada de quantos caracteres quiser em qualquer combinação.
Ex.:
1 2 3 4 5 6 7 8 9 10 11 | //Verifica se a string não está vazia function javascriptER(){ //Declara a expressão regular var ER = /./; //Testa a string asd com a ER. Neste teste o retorno será true se passar "" vazio o retorno será false. return ER.test("asd"); } |
1 2 3 4 5 6 7 8 9 | function phpER(){ //Declara a expressão regular $ER = '/./'; //Testa a string asd com a ER. Neste teste o retorno será true se passar "" vazio o retorno será false. return preg_match($ER, "string"); } |
Criando listas: Listas são agrupamentos de informações em ER para dizer alguma determinada regra.
Ex.: [0-9] nesta lista se tiver algum numero de 0-9 (o hifen serve como escala de até de 0 até 9 de A até Z…) ele retornará true, para verificar se tem apenas número use /^[0-9]{1,}$/ onde ^ diz que inicia a ER e $ diz quando termina, {1,} significa que o valor será procurado de 1 até N vezes na string, assim a string com “00099878″ retornará true e a string com “03090338.0494″ retornará false. Para validar um número com duas casas decimais, separado por ponto usaria /^[0-9]{1,}[\.][0-9]{0,2}$/ o \. significa que o caracter “.” está sendo escapado, pois ele representa qualquer caracter, sendo escapado representará apenas ele mesmo.
Agora já vimos que ^ significa que deverá ser procurado no inicio, $ no final {2,3} quantidade de vezes que a regra da lista pode ser repetida, \ é o caracter de escape.
Agora vem outro significado para o caracter ^ (circunflexo), ele também representa o valor negativo, rejeitado, oposto, not. Ex.: [^0-9] ele irá procurar todos os caracteres que não sejam de 0 a 9. Se quiser criar uma regra com o circunflexo pode-se utilizá-lo no final da instrução, assim: [0-9^] retorna verdadeiro para caracteres de 0 a 9 e ^ 00099^09 é um valor válido para esta ER.
Bom como tem gente na internet que já explicou muito melhor do que eu poderia explicar o que são ERs, vou mandar para vocês o link de um pequeno tutorial de como usar Expressões Regulares.
http://guia-er.sourceforge.net/
Outra dica é o Add-on do Firefox para testar as suas Expressões regulares:
Firebug (utilizando o console para executar scripts javascript em modo interativo)
Abraço,