Expressões regulares com javascript
Uma das coisas mais uteis no mundo da computação são as expressões regulares. Elas nos dão um poder incrivel de manipular dados. Escrevi esse post com base nos meus estudos recentes sobre expressões regulares no javascript, portanto se você encontrar erros por favor reporte-os nos comentarios. Outra coisa é que não é minha ideia ensinar expressões regulares aqui, quero apenas mostrar como usa-las no javascript, se você tem interesse em aprender expressões regulares eu recomendo o guia-er do Aurelio, que é referencia nacional no assunto (inclusive ele possui um livro publicado sobre o assunto, excelente por sinal). Vamos lá então…
O objeto RegExp.
Vou mostrar aqui dois metodos do objeto:
- test – Testa a expressão regular e retorna true caso a expressão case com um valor.
- exec – Executa a busca pela expressão regular retornando um array com informações do primeiro valor casado
Para definirmos um objeto do tipo RegExp basta atribuir a uma variavel o padrão desejado dentro de duas barras, assim:
Simples né? Agora vamos supor a seguinte string:
Vamos agora procurar uma data dentro dessa string usando o metodo exec:
O metodo exec nos retorna um vetor onde o primeiro indice (0) é o nosso casamento, e os demais indices são os grupos casados, no nosso caso a saida é:
0 => 10/09/1985
1 => 10
2 => 09
3 => 1985
}
Se formos apenas validar uma data qualquer, como se estivessemos validando uma data em um formulario, poderiamos simplesmente fazer assim:
alert( ‘Data valida!’ );
}
Lembrando que o metodo test retorna apenas true ou false!
O objeto String.
O objeto String contem alguns metodos que podemos usar expressões regulares, são eles:
- match – Semelhante ao metodo exec do objeto RegExp retorna um array com os resultados
- search – Procura por um casamento na string e torna a posição que encontrou o casamento ou -1 caso não consiga casar o padrão.
- replace – Substitui um padrão por uma outra string
- split – Quebra a string em nos locais que encontrar o padrão.
Para mostrar os metodos do objeto String vamos primeiro definir uma expressão regular para validação de email:
E agora vamos propor a seguinte string:
Primeiro vou mostrar o metodo match, cujo retorno é exatemente igual do metodo exec do objeto RegExp.
Observe acima que ao inves de construir a expressão regular como parametro do metodo match eu apenas passei um objeto do tipo RegExp. É importante lembrar que os metodos do objeto RegExp aceitam objetos do tipo String como parametros, e os metodos que usam expressões regulares do objeto String aceitam objetos do tipo RegExp como parametros. Confuso? Imagine isso:
var String.search( RegExp ); // Objeto do tipo String recebendo como parametro um objeto do tipo RegExp
Voltando ao retorno do nosso metodo match, veja que o casamento sempre estará no indice zero e nos demais indices acima de zero estarão os grupos casados.
Agora o metodo search: ele é bem simples, apenas retorna a posição em que ele casou o padrão, ou -1 caso ele não tenha casado o padrão. Neste caso podemos fazer uma condição do tipo:
alert( ‘Encontrou um endereço de email no texto’ );
}
Agora um metodo muito legal, o replace. Sem muito o que falar, ele apenas substitui uma padrão casado por outra coisa (string, numero…). Vamos supor que nos queiramos proibir a publicação de emails pessoais, e na string acima esta meu email, neste caso fariamos isso:
O ultimo metodo da nossa lista, o split. O proposito dele é quebrar uma string onde casar o padrão. Sabendo disso, vamos usa-lo para capturar o dominio de um email. Vejamos:
var retorno = email.split( /[@]/ );
alert( ‘Dominio é: ‘ + retorno[1]);
Neste caso o retorno da quebra acima seria o array:
0 => diegoholiveira
1 => yahoo.com.br
}
É isso. Espero que seja util. E lembre-se, se encontrar erros por ai me avise, pois será importante no meu aprendizado.
Bem útil!!!
gostaria de parabeniza-lo pelo belo artigo!