Desenvolvimento - Javascript

JavaScript - Expressões Regulares

Este artigo explica o que são expressões regulares e como criá-las em Javascript.

por Manoel M. Alves S. Jr



Olá pessoal, recebi alguns emails de pessoas interessadas em saber um pouco mais das características do JavaScript, outros até me disseram que falei mais Javanês que JavaScriptês ( :D ), uma linguagem não tem nada a ver com a outra, confundiram zé carroceiro com zeca roceiro, rsrs. mais tudo bem, eu também já passei por isso.

Bom hoje vamos tratar de um assunto que atualmente os profissionais que desenvolvem ferramentas anti-spams estão estudando a fundo, mais até que o funcionamento de spams. Entender as expressões regulares dentro das linguagens utilizadas nesses softwares se tornou extremamente relevante, assim se você conseguir desenvolver um programa que funcione cabalmente, me avisa tá! e outra serás um odiado e amado milhionário!.

Expressões Regulares

Expressões Regulares são padrões usados para pegar combinações de caracteres em cadeias de caracteres (Strings), em JS expressões regulares também são objetos. Esses padrões são usados com os métodos exec e test do objeto RegExp e com os métodos match, replace, search e split dentro da string, nesse artigo falaremos apenas de alguns padrões de combinações, no próximo artigo continuaremos o assunto.

Criando uma Expressão Regular

Existem duas maneiras de se criar uma ER:

- Usando uma ER literal, como segue:
er = /abc(?=yxz)/; // pegue a string abc somente se ela for seguida por yxz
Se a ER se mantém constante, é recomendável usar esse modo de construção devido sua melhor perfomance.

- Chamando a função construtor do objeto RegExp, como segue:
er = new RegExp("abc(?=yxz)");

A diferença desse modo de criar a ER é que nesta, a interpreatação da expressão é feita em tempo de execução e a anterior é feita quando o script é avaliado pelo interpretador js e então guardado na memória, use modelo de função construtor se não souber qual padrão de expressão ou se estiver pegando o padrão de um valor de elemento de entrada em um form, ex: <input type="text" onchange="funcao()">

Exemplo prático:

<html>
<script language="javaScript1.2">
<!-- script criado para o site: www.linhadecodigo.com.br
//   autor: Manoel Messias Alves S. Jr  data: 14 de maio de 2004 10:40
//   email: junmanoel@pop.com.br
// exibe o 1º nome e a idade a partir da entrada digitada -->
 var myRe1 = /\w+\s/;
 var myRe2 = /\s\d+/;
 
 function executa(valor){
 		nome = myRe1.exec(valor);
		idade = myRe2.exec(valor);
		if(nome == null || idade == null)
			alert("Entrada não está correta, siga o ex: Nome Sobrenome idade");
		else
			alert("Nome: "+nome+"\nIdade: "+idade+" anos");
		 }
</script>
<body>
Digite seu nome, idade e clique em outro lugar, (ex: João Alencar Faria 32)
<input type="text" onChange="executa(this.value);"/>
</body>
</html>

Explicação do código acima:

var myRe1 = /\w+\s/; - indica um padrão onde os primeiros digitos alfanumericos(\w) seguido de um espaço em branco(\s) será testado no momento que a função executa(valor) for chamanda.

var myRe2 = /\s\d+/; - indica um padrão onde os primeiros digitos (\d+) de 0 a 9, será testado, também na chamada da função executa(valor),o parametro valor é o texto passado no imput text.

Bem pessoal deu mais ou menos para entender a gota do mar de aplicações das linguagens regulares, claro que se você testar com outros padrões de entrada a mensagem com o nome e idade poderá ser exibida (devido \w indicar qualquer digito alfanumérico), no próximo artigo começaremos ver algo mais interessante, que exibir nome e idade.

um grande abraço,

Manoel M. Alves S. Jr
junmanoel@pop.com.br

Manoel M. Alves S. Jr

Manoel M. Alves S. Jr - Trabalho com aplicações para web. Atualmente cria aplicações em java para uma das maiores indústrias de produção de áçucar e alcool do Brasil.