Home
índice
Página anterior

Expressões Regulares

As Expressões Regulares são utilizadas para procurar e comparar caracteres. As regex servem exatamente para isto - localizar um determinado padrão de caracteres em um texto. Podem ser caracteres isolados ou uma porção deles dispostos numa determinada ordem. Lembrete: Caracter é o nome dado a cada um dos símbolos disponíveis e que podem ser usados para produzirem um programa de computador. Não são apenas letras, os textos possuem mais do que isso. As palavras são separadas por espaços, as sentenças são separadas por vírgulas e as frases são separadas por pontos. Existem ainda hífens, ponto e vírgula, sublinhado e tudo isso junto compõe o conjunto de caracteres. As expressões regulares como já foi dito, são formas de definir um padrão, para realizar pesquisa ou substituição de conteúdo e são independentes de linguagens de programação. Podem ser usadas em javaScript, em C, C++, Java e são manipuladas com o Objeto REGEXP, criado justamente para trabalhar com as expressões regulares. O Objeto String também tem algumas funções para manipular estas expressões.

Exercícios com Regex

Com o operador new

  1. test () Retorna se o padrão aconteceu ou não.
	 No javaScript:
        var regex = new RegExp("Helena");//usando o operador new
            var string = "Helena";
            alert(regex.test(string));
        Resultado: true //nesse caso o resultado é um valor booleano
	

Usando a Sintaxe Literal

As expressões regulares também podem ser criadas usando a sintaxe literal.

	No javaScript:
	var regex = /Helena/;//começa com barra e termina com barra, sem as aspas.
	var string = "Helena";
        alert(regex.test(string));
	Resultado: true //nesse caso o resultado é um valor booleano
	

Modificadores

No exercício anterior, a palavra Helena, está absolutamente igual. Ambas foram escritas com H maísculo. Para procurar helena por exemplo, entraria o modificador i, que ignora se a letra é maiúscula ou minúscula.

	No javaScript:
	var regex = /Helena/i; //modificador que ignora se é maiúscula ou minúscula
	Obs: se fosse com o operador new, seria assim:
	var regex = new RegExp("Helena", "i");
        var string = "helena";
        alert(regex.test(string));
	Resultado: true //nesse caso o resultado é um valor booleano
	

Para diminuir o código

	No javaScript:
        alert(/Helena/i.test("helena"));
	

exec ()

Retorna a primeira ocorrência de conteúdo na string passada, que atende a expressão regular.

No javaScript:
alert(/Helena/i.exec("helena"));/*como o i diz para ignorar maiúsculas 
ou minúsculas, ele retorna Helena ou helena*/
Resultado: Helena

No javaScript:
alert(/cedo/i.exec("Maria saiu cedo de casa. Seu pai também resoveu chegar mais cedo no serviço."));
/*aqui ele retorna somente uma ocorrência de string*/
Resultado: cedo

Para verificar as ocorrências de string

 No javaScript:
var str = "Maria saiu cedo de casa. Seu pai também resoveu chegar mais Cedo no escritório."; alert(/cedo/ig.exec(str));
/*aqui ele retorna somente uma ocorrência de string*/

Para retornar todas as ocorrências de string

Obs: Essa função é do objeto String.
alert(str.match(/cedo/ig));
/*aqui ele retorna todas as ocorrências de string*/
Resultado: cedo, Cedo

Metacaracteres

(.)

Retorna a ocorrência de qualquer caracter, letra ou número, com exceção de novas linhas.

	No javaScript:
        alert(/./.test("Filipe27"));
	Resultado: true //nesse caso o resultado é um valor booleano
	

(w)

Retorna a ocorrência de caracteres de a-z, de 0-9 e underline.

	No javaScript:
        alert(/\w/.test("Filipe")); //não esquecer da barra invertida 
	Resultado: true //nesse caso o resultado é um valor booleano
	

(s)

Retorna a ocorrência de espaços na string

	No javaScript:
        alert(/\s/.test("Fil ipe")); //não esquecer da barra invertida 
	Resultado: true // retorno de true porque tem um espaço
	

(d)

Retorna a ocorrência de dígitos (números)

	No javaScript:
alert(/\d/.test("Filipe27")); //não esquecer da barra invertida
Resultado: true //retorno de true porque tem números

(^)

Retorna a ocorrência de qualquer caracter no início da string

	No javaScript:
        alert(/^27/.test("27Filipe")); //ocorrência no início da string
	Resultado: true //retorno de true porque a string começa com o número 27
	

($)

Retorna a ocorrência de qualquer caracter no fim da string

	No javaScript:
        alert(/27$/.test("Filipe22"));//ocorrência no fim da string
	Resultado: false //retorno de false porque a string termina com o número 22
	

Um dígito no final da string

Retorna a ocorrência de dígitos no final do texto

	No javaScript:
alert(/\d$/.test("Filipe22"));//ocorrência de dígitos no fim da string Resultado: true //retorna true porque a string termina com números

Dois dígitos no final da string

Retorna a ocorrência de dois dígitos no final do texto

No javaScript:
alert(/\d\d$/.test("Filipe22"));// dois dígitos no fim da string
Resultado: true //retorna true porque a string termina com dois números

Padrão para encontrar CEP

Retorna a ocorrência de um padrão de números, nesse caso do CEP.

No javaScript:
alert(/^\d\d\d\d\d\-\d\d\d$/.test("76422-216"));/*verifica se o padrâo 
de cinco dígitos, tracinho e mais três dígitos é verdadeiro.*/
Resultado: true //retorna true porque existe o padrão.

Quantificadores

Os quantificadores servem para indicar uma quantidade de dígitos.

No javaScript:
alert(/\d*/.test("Dal6"));//verifica a ocorrência de zero ou mais dígitos.
Resultado: true //retorna true porque existe um dígito.

Retorna a ocorrência de um padrão de números, nesse caso do CEP de forma abreviada.

No javaScript:
alert(/^\d{5}-\d{3}$/.test("76422-216")); 
/*forma resumida de verificar se o padrâo, feito para CEP,
de cinco dígitos, tracinho e mais três dígitos é verdadeiro.*/
Resultado: true //retorna true porque existe o padrão.

Padrão para encontrar uma Data

Retorna a ocorrência de um padrão de números, nesse caso uma data.

No javaScript:
alert(/^\d{2}\/\d{2}\/\d{4}$/.test("03/03/1959"));/*verifica se o padrâo de dois dígitos, barra,
mais dois dígitos, barra e mais quatro dígitos é verdadeiro.*/
Resultado: true //retorna true porque o padrão está correto.

Retorna a ocorrência de um padrão de números, nesse exemplo a Data, de forma abreviada.

No javaScript:
alert(/^\d{2}\/\d{2}\/\d{2,4}$/.test("03/03/1959"));/*forma resumida de verificar se o padrâo, feito para Data,
de dois dígitos, barra, mais dois dígitos, barra e mais de dois ou quatro dígitos é verdadeiro.*/
Resultado: true //retorna true porque existe o padrão.

Padrão para encontrar uma E-mail

Retorna a ocorrência de um padrão de números, nesse caso de um e-mail.

No javaScript:
alert(/\w+@\w+\.\w{2,3}/.test("helena@live.com")); /*verifica se o padrâo de um ou mais caracteres, depois arroba         e novamente um ou mais caracteres, ponto (lembre-se de colocar a barra invertida, para escapar o ponto)e a ocorrência         de no mínimo dois e no máximo três caracteres que seria o padrão para emails, ocorreu.*/
Resultado: true //retorna true porque o padrão está correto.
No javaScript:
alert(/\w+@\w+\.\w{2,3}/.test("helena@live.com.br"));//aqui ele avalia true também,
porque a expressão pede para avaliar de dois a três caracteres
Resultado: true

Caracters Opcionais

Padrão para identificar a ocorrência de uma palavra.

No javaScript:
alert(/Deus/.test("Deus"));/* */
Resultado: true //retorna true porque a palavra  Deus foi encontrada.

Padrão para substituir uma letra.

No javaScript:
alert(/Deus[a]/.test("Deusa"));/*este agrupador, diz para a regex que pode ser Deus ou Deusa*/
Resultado: true //retorna true porque ele tinha a opção de escolher usando também a letra a.

Padrão para encontrar um número com vírgula.

No javaScript:
alert(/\d[\d\,]*/.test("12,09"));/*para avaliar um número que tenha vírgula*/
Resultado: true //retornaria true também se fosse usada a notação americana, como no exemplo abaixo. No javaScript: alert(/\d[\d\,]*/.test("12.09"));/*padrão americano que usa o ponto no lugar da vírgula*/

Buscas e Substituições

Replace (função do objeto String)

 No javScript:
 var str = "Maria saiu cedo de casa. Seu pai também resoveu chegar mais Cedo no serviço.";
 alert(str.match(/cedo/ig));//encontra as palavras que validam o padrão.
 Obs: o i ignora maísculas e minúsculas e g 
 (g é o modificador que faz a pesquisa em toda a string.
 alert(str.replace(/cedo/ig, "mais tarde"));
 /*a função replace recebe uma expressão regular e em seguida 
 faz a substituição desta palavra, pela palavra ou frase indicada.*/
 Maria saiu cedo de casa. Seu pai também resoveu chegar mais Cedo no serviço.
 Resultado: Maria saiu mais tarde de casa. Seu pai também resoveu chegar mais tarde no serviço.
 
 No javScript:
 var str = "Maria saiu cedo de casa. Seu pai também resoveu chegar mais Cedo no serviço.";
 alert(str.match(/s[a-z]/ig));
 alert(str.replace(/s[a-z]/ig, "z"));
 Resultado: sa, sa,

 No javScript:
var url = "www.ada.com.br/clientes-2007.html";
//"http://www.ada.com.br/clientes-2007/clientes.lug"
var re =  /www.ada.com.br\/\w{2,}-\d{4}\.html/;
 alert(re.test(url));
 

Para fazer substituições de partes de uma string

No javScript:
var url = "www.ada.com.br/clientes-2007.html";
//"http://www.ada.com.br/clientes-2007/clientes.lug"
var re =  /www.ada.com.br\/\w{2,}-\d{4}\.html/;
alert(re.test(url));
var re = /(www.ada.com.br)\/\w{2,}-\d{4}\.html/; 
para guardar pedaços de uma string em uma variável:
coloca-se entre parênteses, podendo esses mesmos pedaços serem depos utilizados em replace
alert (url.replace(re, "http://$1"));
replace recebe dois parâmetros, a expressão regular e o que se vai mudar
 Resultado:http://www.ada.com.br
 
No javScript:
var url = "www.ada.com.br/clientes-2007.html";
//"http://www.ada.com.br/clientes-2007/clientes.lug"
var re =  /www.ada.com.br\/\w{2,}-\d{4}\.html/;
alert(re.test(url));
var re = /(www.ada.com.br)\/(\w{2,})-(\d{4})\.html/; /*para trocar três parte da string*/
alert (url.replace(re, "http://$1/$3/$2.lug"));
 Resultado:http://www.ada.com.br/2007/clientes.lug